コード例 #1
0
        private void SendHeartBeat()
        {
            var time = MyGameTime.time;

            if (time - _lastHeartBeatTime > MAX_HEARTBEAT_INTERVAL)
            {
                _lastHeartBeatTime = time;
                foreach (var channel in _connectedChannels)
                {
                    if (channel.IsConnected)
                    {
                        var msg = HeartBeatMessage.Allocate();
                        channel.SendReliable((int)EServer2ClientMessage.HeartBeat, msg);
                        msg.ReleaseReference();
                    }
                    else
                    {
                        _disconnectedChannel.Add(channel);
                    }
                }

                if (_disconnectedChannel.Count > 0)
                {
                    foreach (var channel in _disconnectedChannel)
                    {
                        _connectedChannels.Remove(channel);
                    }

                    _disconnectedChannel.Clear();
                }
            }
        }
コード例 #2
0
 private void CheckHeartBeat()
 {
     if (_clientChannel != null && _stopwatch.ElapsedMilliseconds - _lastHeartBeatTime > _checkHeartBeatTime)
     {
         var msg = HeartBeatMessage.Allocate();
         msg.Id = SingletonManager.Get <ServerFileSystemConfigManager>().BootConfig.Id;
         SendAndReleaseMessage(_clientChannel, RpcMessageType.ServerHeartBeat, msg);
         _lastHeartBeatTime = _stopwatch.ElapsedMilliseconds;
     }
 }