Esempio n. 1
0
            /// <summary>
            /// 网络频道轮询。
            /// </summary>
            /// <param name="elapseSeconds">逻辑流逝时间,以秒为单位。</param>
            /// <param name="realElapseSeconds">真实流逝时间,以秒为单位。</param>
            public void Update(float elapseSeconds, float realElapseSeconds)
            {
                if (m_Socket == null || !m_Active)
                {
                    return;
                }

                if (m_HeartBeatInterval > 0f)
                {
                    bool sendHeartBeat      = false;
                    int  missHeartBeatCount = 0;
                    lock (this)
                    {
                        m_heartbeatTime += realElapseSeconds;
                        if (m_heartbeatTime >= m_HeartBeatInterval)
                        {
                            sendHeartBeat      = true;
                            missHeartBeatCount = m_missingHeartBeatCount;
                            m_heartbeatTime    = 0f;
                            m_missingHeartBeatCount++;
                        }
                    }

                    if (sendHeartBeat && m_NetworkChannelHelper.SendHeartBeat())
                    {
                        if (missHeartBeatCount > 0 && NetworkChannelMissHeartBeat != null)
                        {
                            NetworkChannelMissHeartBeat(this, missHeartBeatCount);
                        }
                    }
                }
            }