Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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;
        }
Ejemplo n.º 3
0
        /// <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;
        }
Ejemplo n.º 4
0
        /// <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}");
        }