diff --git a/lua/app/net/net_manager.lua b/lua/app/net/net_manager.lua index 0a768b67..83372cd2 100644 --- a/lua/app/net/net_manager.lua +++ b/lua/app/net/net_manager.lua @@ -145,7 +145,8 @@ function NetManager:connect(domain, port, callback, socketName) end) CS.BF.BFMain.Instance.NetMgr:AddLuaOnDisconnected(function(name) - self:onDisconnect(name) + -- self:onDisconnect(name) + self:disconnectAndReconnect() end) CS.BF.BFMain.Instance.NetMgr:AddLuaOnReceiveMessage(function(name, group, recvId, bytes) @@ -554,6 +555,21 @@ function NetManager:disconnectAll() end end +function NetManager:disconnectAndReconnect() + if self.alreadyConnected[NetManager.MAIN_SOCKET_NAME] then + if self.reconnectMainId then + return + end + self.reconnectMainId = self:performWithDelayGlobal(function () + self.reconnectMainId = nil + self:silentReconnectMain() + end, self.mainReconnectWaitTime) + self.mainReconnectWaitTime = self.mainReconnectWaitTime + 1 + else + self:closeAll() + end +end + function NetManager:showReconnectMain() if self.reconnectMainId then SchedulerManager:unscheduleGlobal(self.reconnectMainId) @@ -832,7 +848,7 @@ function NetManager:onError(socketName, errorType, errorMsg) elseif errorType == NetErrorCode.DNSParseDomainNameError then self:closeAll() else -- 未定义的error - self:disconnect(socketName) + self:disconnectAndReconnect() end if not self.disconnectTime then self.disconnectTime = Time:getServerTime() diff --git a/lua/app/ui/ui_manager.lua b/lua/app/ui/ui_manager.lua index 14bac08e..25ab8567 100644 --- a/lua/app/ui/ui_manager.lua +++ b/lua/app/ui/ui_manager.lua @@ -794,7 +794,7 @@ function UIManager:showWaitNet(forceRestart) seq:AppendInterval(GConst.WAIT_NET_RSP_TIME) seq:OnComplete(function() -- 一段时间后还没收到回复就断开连接 - NetManager:disconnectAll() + NetManager:disconnectAndReconnect() end) self.waitNetSeq = seq elseif not self.waitNetSeq:IsPlaying() then