public void ProcessRequest(TcpClient client, NetworkStream stream, Room room) { try { string request = ParseStreamAndGetRequest(stream); Console.WriteLine($"request received: {request}"); string[] splittedMessage = GetSplittedMessageByRequest(request); string sender = GetSenderByRequest(request, splittedMessage); if (IsJoinOrLeftRequest(request)) { string response = ""; if (IsJoinRequest(request)) { response = GetJoinResponse(client, room, sender); _chatRoomService.SendMessageToClient(client, response); } else { response = GetLeftResponse(sender); _chatRoomService.LeftTheRoom(client, sender, room); } _chatRoomService.BroadcastMessage(sender, room.Name, response); } else { var message = splittedMessage[0].Split(':')[1]; var receiver = splittedMessage[2].Split(':')[1]; if (string.IsNullOrWhiteSpace(receiver)) { _chatRoomService.BroadcastMessage(sender, room.Name, FormatMessageForSend(sender, message)); } } } catch (Exception ex) { Console.WriteLine($"Exception: {ex.ToString()}"); _chatRoomService.SendMessageToClient(client, $"Exception: {ex.ToString()}"); } }