public async ValueTask DisconnectAsync(DisconnectReason reason, string?message = null) { if (!Connection.IsConnected) { return; } using var writer = MessageWriter.Get(); MessageDisconnect.Serialize(writer, true, reason, message); await Connection.DisconnectAsync(message ?? reason.ToString(), writer); }
public override void Run(params object[] args) { var id = (uint)args[0]; var netEvent = (Event)args[1]; var peersToSend = Server.clients.FindAll(x => x.Status == ClientStatus.InGame && x.ID != id).Select(x => x.Peer).ToArray(); var message = new MessageDisconnect(netEvent.Peer.ID); Network.Broadcast(ServerPacketType.ClientDisconnected, message, peersToSend); netEvent.Peer.Disconnect(netEvent.Peer.ID); //Console.Log($"Client '{netEvent.Peer.ID}' disconnected"); }