Esempio n. 1
0
        public override Task HandleClientConnected(object sender, ClientConnectedEventArgs eventArgs)
        {
            NibriClient client = new NibriClient(this, eventArgs.ConnectingClient);

            client.Disconnected += (NibriClient disconnectedClient) => {
                NibriClients.Remove(disconnectedClient);
                Log.WriteLine("[NibriClient/#{0}] Client disconnected and removed from active clients list.", disconnectedClient.Id);
            };
            NibriClients.Add(client);

            return(Task.CompletedTask);
        }
Esempio n. 2
0
        /// <summary>
        /// Sends a message to all the connected clients, except the one who's sending it.
        /// </summary>
        /// <param name="sendingClient">The client sending the message.</param>
        /// <param name="message">The message that is to bee sent.</param>
        public async Task Broadcast(NibriClient sendingClient, Message message)
        {
            List <Task> senders = new List <Task>();

            foreach (NibriClient client in NibriClients)
            {
                // Don't send the message to the sender
                if (client == sendingClient)
                {
                    continue;
                }

                senders.Add(client.Send(message));
            }
            await Task.WhenAll(senders);
        }