From a53dc6d688f9b8e39dac1f90c6a5194378868d05 Mon Sep 17 00:00:00 2001 From: xiekaidong Date: Thu, 6 Jul 2023 15:17:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AA=E5=8F=8A=E6=97=B6=E6=94=B6=E5=88=B0?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E3=80=81=E6=96=AD=E5=BC=80=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E3=80=81=E6=9C=AA=E5=AE=9A=E4=B9=89error=EF=BC=8C=E4=B8=BB?= =?UTF-8?q?=E5=8A=A8=E9=9D=99=E9=BB=98=E9=87=8D=E8=BF=9E=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lua/app/net/net_manager.lua | 20 ++++++++++++++++++-- lua/app/ui/ui_manager.lua | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) 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