public void Run()
        {
            string name = _responseHandler.GetResponse(_client);

            if (!_allChatDetails.IsClientExist(name))
            {
                _allChatDetails.AddClient(new ClientModel(name, _client));
            }
            Console.WriteLine($"Client with name : {name} connected to server");

            var clientName = GetClient(name);

            if (clientName != null)
            {
                if (!clientName.Connected)
                {
                    var globalChat = _allChatDetails.GetAllChatByType(ChatType.Globaly)[0];
                    globalChat.RemoveClient(clientName);
                    globalChat.AddClient(clientName);
                }

                _userClient                     = clientName;
                _userClient.Client              = _client;
                _userClient.Connected           = true;
                _userClient.LastStatusConnected = true;
            }
            else
            {
                var globalChat = _allChatDetails.GetAllChatByType(ChatType.Globaly)[0];
                _userClient = new ClientModel(name, _client);
                globalChat.AddClient(_userClient);
            }
            //_userClient.CurrentConnectChat = _allChatDetails.GetAllChatByType(ChatType.Globaly)[0];

            //SendToAll($"user {_userClient.Name} connect to chat");


            ListenThread = new Thread(() =>
            {
                ListenReciveMesages();
            });
            ListenThread.Start();
        }
예제 #2
0
        private void ConnectedToChat(string requestData)
        {
            string response = requestData;
            InsertToChatMessageModel request = Utils.DeSerlizeObject <InsertToChatMessageModel>(response);
            var        clientSneder          = _allChatDetails.GetClientByName(Name);
            ChatModule foundChat             = _allChatDetails.GetChatById(request.ChatId);

            lock (locker)
            {
                _allChatDetails.UpdateCurrentChat(clientSneder, foundChat);
            }
            Console.WriteLine(clientSneder.CurrentConnectChat);

            while (true)
            {
                request = Utils.DeSerlizeObject <InsertToChatMessageModel>(response);

                var model = new NewChatMessage
                {
                    RequestType = "NewChatMessage",
                    From        = request.From,
                    Message     = request.MessageChat
                };
                string message = Utils.SerlizeObject(model);
                if (request.MessageChat == "exit")
                {
                    lock (locker)
                    {
                        _allChatDetails.UpdateCurrentChat(clientSneder, null);
                        //clientSneder.CurrentConnectChat = null;
                    }
                    model.Message = $"The user {model.From} disconnect from this chat";
                    SendAll(foundChat, request, $"User");
                    return;
                }

                SendAll(foundChat, request, message);

                foundChat.AddMessage(new MessageModel(MessageType.TextMessage, message, clientSneder, DateTime.Now));
                response = _responseHandler.GetResponse(_allChatDetails.GetClientByName(Name).Client);
            }
        }