private void SendPingMessage(FunapiTransport transport) { long timestamp = DateTime.Now.Ticks; // Send response if (transport.Encoding == FunEncoding.kJson) { object msg = transport.JsonHelper.Deserialize("{}"); transport.JsonHelper.SetStringField(msg, kMsgTypeBodyField, kClientPingMessageType); transport.JsonHelper.SetStringField(msg, kSessionIdBodyField, session_id_); transport.JsonHelper.SetIntegerField(msg, kPingTimestampField, timestamp); transport.SendMessage(new FunapiMessage(transport.Protocol, kClientPingMessageType, msg)); } else if (transport.Encoding == FunEncoding.kProtobuf) { FunPingMessage ping = new FunPingMessage(); ping.timestamp = timestamp; FunMessage msg = CreateFunMessage(ping, MessageType.cs_ping); msg.msgtype = kClientPingMessageType; msg.sid = session_id_; transport.SendMessage(new FunapiMessage(transport.Protocol, kClientPingMessageType, msg)); } transport.PingWaitTime += transport.PingIntervalSeconds; DebugUtils.DebugLog("Send {0} ping - timestamp: {1}", transport.str_protocol, timestamp); }
private void OnServerPingMessage(FunapiTransport transport, object body) { if (transport == null) { DebugUtils.Log("OnServerPingMessage - transport is null."); return; } // Send response if (transport.Encoding == FunEncoding.kJson) { transport.JsonHelper.SetStringField(body, kMsgTypeBodyField, kServerPingMessageType); if (session_id_.Length > 0) transport.JsonHelper.SetStringField(body, kSessionIdBodyField, session_id_); transport.SendMessage(new FunapiMessage(transport.Protocol, kServerPingMessageType, transport.JsonHelper.Clone(body))); } else if (transport.Encoding == FunEncoding.kProtobuf) { FunMessage msg = body as FunMessage; FunPingMessage obj = (FunPingMessage)GetMessage(msg, MessageType.cs_ping); if (obj == null) return; FunPingMessage ping = new FunPingMessage(); ping.timestamp = obj.timestamp; if (obj.data.Length > 0) { ping.data = new byte[obj.data.Length]; Buffer.BlockCopy(ping.data, 0, obj.data, 0, obj.data.Length); } FunMessage send_msg = CreateFunMessage(ping, MessageType.cs_ping); send_msg.msgtype = msg.msgtype; send_msg.sid = session_id_; transport.SendMessage(new FunapiMessage(transport.Protocol, kServerPingMessageType, send_msg)); } }