private void Server_ClientDisconnected(object sender, SocketDisconnectedEventArgs args) { this.Dispatcher.BeginInvoke(new Action(() => { int index = clients.IndexOf(args.Peer); if (index < 0) { int i = 0; } this.Title = "Disconnected, " + index; map.ForceShorten(index, 0); (grid_Connection.Children[index * 3 + 1] as TextBlock).Text = "断开"; clients[index] = null; playerStatus[index] = PlayerStatus.Disconnected; server.SendToAllAsync(new byte[] { (byte)DataType.PlayerDisconnected, (byte)index }); int liveCount = 0, liveIndex = -1; for (int i = 0; i < map.SnakeCount; i++) { if (playerStatus[i] == PlayerStatus.Playing) { liveCount++; liveIndex = i; } } if (liveCount == 1 && map.SnakeCount > 1) { server.SendToAllAsync(new byte[] { (byte)lib.DataType.GameEnd, (byte)liveIndex }); timer.Enabled = false; } })); }
private void ZSocketClient_OnSocketDisconnected(object sender, SocketDisconnectedEventArgs e) { //change heartbeats: if (timerHeartbeats != null) { timerHeartbeats.Change(0, int.MaxValue); } if (OnSessionClosed != null) { OnSessionClosed(this, new SessionClosedEventArgs { CloseReason = e.CloseReason }); } }
private void ZSocketServer_OnSocketDisconnected(object sender, SocketDisconnectedEventArgs e) { if (OnSessionClosed != null) { OnSessionClosed(this, new SessionClosedEventArgs { CloseReason = e.CloseReason, SessionId = e.Socket.GetHashCode() }); } }