private void OnMessage(Session client, MessageBuffer msg) { MessageID messageId = (MessageID)msg.id(); switch (messageId) { case MessageID.GM_ACCEPT_CS: { GM_Accept recvData = JsonSerializerUtil.FromJsonByte <GM_Accept>(msg.body()); //ProtoTransfer.DeserializeProtoBuf<GM_Accept>(msg); if (recvData.conv == client.id) { OnConnect(client, recvData.roleId); } } break; case MessageID.GM_READY_CS: { GM_Ready recvData = JsonSerializerUtil.FromJsonByte <GM_Ready>(msg.body()); //ProtoTransfer.DeserializeProtoBuf<GM_Ready>(msg); OnReceiveReady(client, recvData); } break; case MessageID.GM_FRAME_CS: { GM_Frame recvData = JsonSerializerUtil.FromJsonByte <GM_Frame>(msg.body()); //ProtoTransfer.DeserializeProtoBuf<GM_Frame>(msg); if (mMode == Mode.LockStep) { OnLockStepFrame(client, recvData); } else { OnOptimisticFrame(client, recvData); } } break; case MessageID.GM_PING_CS: { GM_Request recvData = JsonSerializerUtil.FromJsonByte <GM_Request>(msg.body()); //ProtoTransfer.DeserializeProtoBuf<GM_Request>(msg); User u = GetUser(recvData.id); if (u != null) { GM_Return sendData = new GM_Return(); sendData.id = recvData.id; u.SendTcp(MessageID.GM_PING_SC, sendData); } } break; } }
public override void OnUpdate() { base.OnUpdate(); if (Time.frameCount % 30 == 0 && PlayerManager.GetSingleton().mReady) { GM_Request sendData = SharedValue <GM_Request> .sData; sendData.id = PlayerManager.GetSingleton().mRoleId; mPingTime = DateTime.Now.Ticks; ClientService.GetSingleton().SendUdp(ClientID.Frame, MessageID.GM_PING_CS, sendData); } }