Ejemplo n.º 1
0
        public void Update()
        {
            if (disposed)
            {
                return;
            }

            uint timeNow = (uint)SystemTime.ClientNow();

            try
            {
                kcp.Update(timeNow);
            }
            catch (Exception)
            {
                //网络无法访问
                this.OnError(ErrorCode.ERR_SocketError);
                return;
            }

            if (!isConnected)
            {
                // 没连接上则报错
                if (timeNow - this.createTime > 3 * 1000)
                {
                    this.OnError(ErrorCode.ERR_KcpCantConnect);
                    this.Dispose();
                    return;
                }
            }
            else
            {
                //因是异步接收,lastRecvTime有可能比timeNow刷新慢。
                if (timeNow < this.lastRecvTime)
                {
                    return;
                }

                //  超时断开连接
                if ((timeNow - this.lastRecvTime) > 10 * 1000)
                {
                    Debug.LogError($"{Name} timeNow:{timeNow}  lastRecvTime:{lastRecvTime}  ts:{(timeNow - this.lastRecvTime)}");

                    this.OnError(ErrorCode.ERR_KcpChannelTimeout);
                    this.Dispose();
                    return;
                }
            }
        }