/// <summary> /// Accepts the newly connected client and add it to the attached <see cref="ClientHandler"/>. /// </summary> /// <param name="socket">Socket of the new connection.</param> /// <returns>The accepted client.</returns> protected override TcpConnection Accept(Socket socket) { var client = new ChatServerClient(socket); client.StartListening(); _clientHandler.AddClient(client); return(client); }
/// <summary> /// Adds a client to this <see cref="ClientHandler"/> and subscribe to its updates. /// </summary> /// <param name="client"><see cref="ChatServerClient"/> to add</param> public void AddClient(ChatServerClient client) { _clients.Add(client); client.OnMessage += Client_OnMessage; client.OnDisconnect += Client_OnDisconnect; Console.WriteLine($"{client.HostName} connected"); ConsoleTitleBuilder.ConnectedClients = ConnectedClientCount; }
/// <summary> /// Handles client disconnects. /// </summary> /// <param name="sender">The disconnecting <see cref="ChatServerClient"/></param> /// <param name="e">Event arguments</param> private void Client_OnDisconnect(ChatServerClient sender, OnClientDisconnectedEventArgs e) { var disconnectMessage = $"{e.Client} disconnected"; _clients.Remove(sender); BroadcastMessage(disconnectMessage); Console.WriteLine(disconnectMessage); ConsoleTitleBuilder.ConnectedClients = ConnectedClientCount; }
/// <summary> /// Handles incoming client messages. /// </summary> /// <param name="sender">Source <see cref="ChatServerClient"/>.</param> /// <param name="e">Message Arguments.</param> private void Client_OnMessage(ChatServerClient sender, OnMessageEventArgs e) { BroadcastMessage(e.MessageText); Console.WriteLine($"{e.Sender} {e.MessageText}"); }