Exemplo n.º 1
0
        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()}");
            }
        }