NetJsonDispatcher.lua.txt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. local NetJsonDispatcher = {}
  2. local S2C = require("Network/S2C.lua")
  3. local jsonConvert = require("Base/json.lua")
  4. local networkManager = require("Network/NetworkManager.lua")
  5. function NetJsonDispatcher.SendData(msgType, tblData)
  6. local jsonConvert = require("Base/json.lua")
  7. local message = jsonConvert:encode(tblData)
  8. if msgType ~= "HEARTBEAT_REQ" then
  9. local _, szTimeFormat = require("Base/Utils.lua"):TimeNow()
  10. print("----> C2S: json: message: szTimeFormat:", szTimeFormat, msgType, message)
  11. end
  12. cast(CS.System.Text.Encoding.UTF8, typeof(CS.System.Text.Encoding))
  13. local bArrayMessage = CS.System.Text.Encoding.UTF8:GetBytes(message)
  14. local rpcId = networkManager:SendData(msgType, bArrayMessage, 0, 0)
  15. end
  16. function NetJsonDispatcher.RecvData(serverMessage)
  17. cast(CS.System.Text.Encoding.UTF8, typeof(CS.System.Text.Encoding))
  18. local stream = serverMessage.msgData
  19. local szMsgData = CS.System.Text.Encoding.UTF8:GetString(stream:GetBuffer(), stream.Position, stream.Length - stream.Position)
  20. local serverProtocol = jsonConvert:decode(szMsgData)
  21. local msgType = S2C[serverMessage.msgType]
  22. if not msgType then
  23. CS.ZLog.Log.Error(string.format("NetworkManager Get callback failed for : %s\n%s" , serverMessage.msgType, serverMessage.msgData))
  24. else
  25. msgType(S2C, serverProtocol)
  26. end
  27. end
  28. networkManager:RegisterDispatcher(0, NetJsonDispatcher)
  29. return NetJsonDispatcher