private void BroadCastMessage(ServerClientController clientController, String message) { clients.Where(x => !x.Equals(clientController)).ToList().ForEach(controller => { controller.SendMessage(message); } ); }
private void HandleClientDisconnect(ServerClientController clientController) { lock (clients_lock) { clients.Remove(clientController); } BroadCastMessage(clientController, $"<<< {clientController.GetClientName()} has leaved the chat!"); Console.WriteLine($"{clientController.GetClientName()}: DISCONNECTED!"); }
private void HandleClientConnection(IAsyncResult asyres) { TcpListener acceptorRef = (TcpListener)asyres.AsyncState; TcpClient client = acceptorRef.EndAcceptTcpClient(asyres); clientConnectionReady.Set(); ServerClientController scc = new ServerClientController(client); clients.Add(scc); scc.HandleClient(HandleClientMessage, HandleClientDisconnect); }
private void HandleClientMessage(ServerClientController clientController, String message) { String command = new String(message.Where(c => !char.IsPunctuation(c) && !char.IsSymbol(c)).ToArray()).ToLower(); commandHandlerDelegate commandToExecute = commands.GetValueOrDefault(command, null); if (commandToExecute != null) { commandToExecute(clientController); return; } String sendMessage = $"{clientController.GetClientName()} says: {message}"; BroadCastMessage(clientController, sendMessage); // Console.WriteLine(sendMessage); }
private void GoodByeCommandHandler(ServerClientController controller) { controller.SendMessage("Досвидания!"); controller.Disconnect(); }