修复网络连接掉线无法重连的问题,

dev_chengFeng
gaoxin 2020-09-01 20:30:34 +08:00
parent 56b7486287
commit 8988ec5823
1 changed files with 30 additions and 10 deletions

View File

@ -113,9 +113,13 @@ function Network:OnReconnectFail()
MsgPanel.ShowTwo("重连失败,是否尝试重连?", function()
Game.Logout()
end, function()
RequestPanel.Show("正在请求重连")
self.re_sendWaitTime = 0
self.re_resendTimes = 0
if self.isConnected then
PopupTipPanel.ShowTip("重连成功!")
else
RequestPanel.Show("正在请求重连")
self.re_sendWaitTime = 0
self.re_resendTimes = 0
end
end, "重新登录")
end
end
@ -140,7 +144,8 @@ function Network:SendMessageWithCallBack(nMsgId, nReMsgId, sMsg, func, isHideMas
if sMsg then
buffer:WriteBuffer(sMsg)
end
self.sendFlag = true
self:SetSending(true)
self.sendWaitTime = 0
if not isHideMask then
@ -148,8 +153,8 @@ function Network:SendMessageWithCallBack(nMsgId, nReMsgId, sMsg, func, isHideMas
end
--Log("-------SendMessage-----msgId:"..nMsgId)
self.socket:SendMessageWithCallBack(nMsgId, nReMsgId, buffer, function(b)
--Log("-------ReceiveMessage-----msgId:"..nReMsgId)
self.sendFlag = false
--Log("-------ReceiveMessage-----msgId:"..nReMsgId)
self:SetSending(false)
self.resendTimes = 0
if self.sendFuncQueue.size > 0 then
self.sendFuncQueue:Dequeue()
@ -171,7 +176,7 @@ function Network:ReceiveErrorInfo(buffer)
local msg = CommonProto_pb.ErrorResponse()
msg:ParseFromString(data)
self.sendFlag = false
self:SetSending(false)
self.resendTimes = 0
if self.sendFuncQueue.size > 0 then
self.sendFuncQueue:Dequeue()
@ -227,6 +232,16 @@ function Network:UnRegisterMessage(nMsgId, pMessageHandle)
self.socket:UnregistNetMessage(nMsgId, pMessageHandle)
end
-- 设置发送状态
function Network:SetSending(isSending)
Log("设置当前请求状态:"..tostring(isSending))
self.sendFlag = isSending
end
function Network:IsSending()
return self.sendFlag
end
function Network:Update()
if self.reconnectFlag and self.re_resendTimes <= self.re_maxResendTimes then
self.re_sendWaitTime = self.re_sendWaitTime + Time.fixedDeltaTime
@ -249,7 +264,7 @@ function Network:Update()
end
end
if self.sendFlag then
if self:IsSending() then
self.sendWaitTime = self.sendWaitTime + dt
if self.sendWaitTime > self.maxSendWaitTime then
if self.resendTimes < self.maxResendTimes then
@ -257,10 +272,15 @@ function Network:Update()
MyPCall(self.sendFunc)
elseif self.resendTimes == self.maxResendTimes then
RequestPanel.Hide()
MsgPanel.ShowTwo("请求失败,是否重新请求?", function()
MsgPanel.ShowTwo("请求失败,请再次尝试!", function()
Game.Logout()
end, function()
self.resendTimes = 0
Log("获取当前请求状态:"..tostring(self:IsSending()))
-- if self:IsSending() then
self:SetSending(false)
self.resendTimes = 0
self.sendFuncQueue:Clear()
-- end
end, "重新登录")
end
self.resendTimes = self.resendTimes + 1