Esempio n. 1
0
 private void Update()
 {
     if (IsConnectedToServer)
     {
         long timeNow = GameEntry.Timer.GetTimeStamp();
         if (timeNow > m_LastPingTime + m_PingInterval)
         {
             //发送心跳
             m_LastPingTime = timeNow;
             ReqHeartbeat proto = new ReqHeartbeat();
             proto.LocalTime = timeNow;
             Debug.Log("send heartbeat");
             SendMsg(proto);
         }
         //如果心跳包过长时间没收到,就关闭连接
         if (timeNow - m_LastPongTime > m_PingInterval * 1.5f)
         {
             GameEntry.UI.AddTips("服务器断开连接");
             Debug.Log("DisConnect To Server");
             ReloginEventArgs eventArgs = ReferencePool.Acquire <ReloginEventArgs>();
             GameEntry.Event.Fire(this, eventArgs);
             m_NetworkChannel.Close();
             IsConnectedToServer = false;
         }
     }
 }
Esempio n. 2
0
    internal void ReqHeartbeat(MsgPack pack)
    {
        ReqHeartbeat data      = (ReqHeartbeat)pack.msg;
        float        localTime = data.LocalTime;

        RspHeartbeat proto = new RspHeartbeat();

        proto.LocalTime  = localTime;
        proto.ServerTime = GetTimeStamp();
        pack.session.SendMsg(proto);
    }