/// <summary>
        /// Создание задачи и объекта для пользователя после его подключения
        /// </summary>
        /// <param name="client"></param>
        private static void CreateUser(ref TcpClient client)
        {
            MySqlConnection connection = DBmanager.Connect();
            ClientClass     clientObj  = new ClientClass(ref connection, ref client, null, idForNextUser++);

            unassignedUsers.Add(clientObj);
            Task.Run(() => clientObj.Process());
        }
Beispiel #2
0
 protected internal void AddClient(ClientClass client)
 {
     client.room = this;
     connectedUsers.Add(client);
     Console.WriteLine("Successfully added client " + client.name + " to " + name +
                       " room. There are " + connectedUsers.Count + " connected users.");
     connectedUsers.ForEach(user => SendToStream(new MessageClass(codes.SENDING_USERLIST,
                                                                  list: connectedUsers.Select(u => u.name).ToList()), ref user.client));
     SendToStream(new MessageClass(codes.SENDING_CHAT_HIST, list: DBmanager.GetHistory(name, client.connection)), ref client.client);
     Task.Run(() => SendBroadcastMessage(client.name + " joined the room.", connection));
 }
Beispiel #3
0
        protected internal void RemoveClient(int id)
        {
            ClientClass client = connectedUsers.FirstOrDefault(i => i.id == id);

            if (client != null)
            {
                connectedUsers.Remove(client);
            }
            SendBroadcastMessage(client.name + " left the room.", connection);
            connectedUsers.ForEach(user => SendToStream(new MessageClass(codes.SENDING_USERLIST,
                                                                         list: connectedUsers.Select(u => u.name).ToList()), ref user.client));
            Console.WriteLine(client.name + " left the " + name + " room. There are " + connectedUsers.Count + " connected users.");
        }
 /// <summary>
 /// Смена комнаты пользователя
 /// </summary>
 /// <param name="client"></param>
 /// <param name="newRoom"></param>
 public static void ChangeRoom(ClientClass client, string newRoom)
 {
     client.room.RemoveClient(client.id);
     rooms.FirstOrDefault(r => r.name == newRoom).AddClient(client);
 }