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));
}
}