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; } }
private void OnPingReturn(GM_Return recvData) { if (recvData == null) { return; } long interval = DateTime.Now.Ticks - mPingTime; TimeSpan span = new TimeSpan(interval); int ping = span.Milliseconds / 2; EventDispatch.Dispatch(EventID.Ping_Broadcast, ping); }