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