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(); }
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); } }