/// <summary> /// Terminates all connetions made by this client /// </summary> public void Terminate() { IsDisconnecting = true; bool wasConnectedToGameServer = false; bool wasConnectedToAnyServer = false; // If we're connected to a game then we will want to let the server know we're disconnecting // so our character is disconnected from the server itself. Otherwise we will just 'drop due to timeout' // and probably fill the server's error logs up with garbage. if (gameServerThread != null && gameServerThread.IsAlive && gameServer != null) { if (gameServer.IsInGame) { gameServer.LeaveGame(); // Give the client some time to send the leave game packet to the server before // disconnecting. After server get the message it should close our connection so // it shouldn't take a full 2500ms gameServerThread.Join(2500); } gameServer.Disconnect(); if (!gameServerThread.Join(2500)) { Log("!! Failed to join client thread after 2500ms, killing it!"); gameServerThread.Abort(); } wasConnectedToGameServer = true; wasConnectedToAnyServer = true; } if (realmServerThread != null && realmServerThread.IsAlive && realmServer != null) { realmServer.Disconnect(); if (!realmServerThread.Join(1000)) { realmServerThread.Abort(); } wasConnectedToAnyServer = true; } if (chatServerThread != null && chatServerThread.IsAlive && chatServer != null) { chatServer.Disconnect(); if (!chatServerThread.Join(1000)) { chatServerThread.Abort(); } wasConnectedToAnyServer = true; } if (wasConnectedToAnyServer && !wasConnectedToGameServer) { FireOnClientDisconnectEvent(); } }
private void DisconnectClient() { isDisconnecting = true; tcpClient.Close(); ChatServer.Disconnect(this); Debug.Log("Client disconnected"); }
public void Should_Disconnect_From_Chat_Server() { //arrange var user = new User(string.Empty); var server = new ChatServer(); server.Users.Add(user); server.Connect(user); //act server.Disconnect(user); //assert user.IsConnected.ShouldBeEquivalentTo(false); }
public void Should_Throw_Check_If_User_Is_Connected_After_Disconnect_Connect() { //arrange var server = new ChatServer(); var user = new User(String.Empty); server.Users.Add(user); //act server.Connect(user); server.Disconnect(user); server.Connect(user); var result = server.IsConnected(user); //assert result.ShouldBeEquivalentTo(true); }