HeartBeat.lua.txt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. local HeartBeat = {}
  2. local networkManager = require("Network/NetworkManager.lua")
  3. local F_MAX_DISCONNECT_PERIOD = 25
  4. local F_HEART_BEAT_PERIOD = 5
  5. local heartBeatCorutine = nil
  6. local function HeartBeatCoroutine()
  7. while networkManager:IsConnecting() do
  8. require("Network/C2S.lua"):HeartBeat()
  9. require("Base/CoroutineHelper.lua"):Wait(F_HEART_BEAT_PERIOD)
  10. local deltaTime = os.time() - networkManager:GetLastRecvTime()
  11. if deltaTime > F_MAX_DISCONNECT_PERIOD then
  12. CS.ZLog.Log.Error(string.format("Net Disconnected with not response time", deltaTime))
  13. local eventManager = require("Base/ZEventDispatchCenter.lua")
  14. eventManager:DispatchEvent(eventManager.EventType.NET_DISCONNECTED)
  15. networkManager:Disconnect()
  16. break
  17. end
  18. end
  19. heartBeatCorutine = nil
  20. end
  21. function HeartBeat:Init()
  22. if heartBeatCorutine then
  23. require("Base/CoroutineHelper.lua"):Stop(heartBeatCorutine)
  24. end
  25. heartBeatCorutine = require("Base/CoroutineHelper.lua"):Start(HeartBeatCoroutine)
  26. end
  27. function HeartBeat:UnInit()
  28. -- 心跳
  29. require("Base/CoroutineHelper.lua"):Stop(NetworkManager._heartBeatCorutine)
  30. NetworkManager._heartBeatCorutine = nil
  31. end
  32. return HeartBeat