public Client(Socket client) { _socket = client; // // Create a new room for the new connecting client. // var roomManager = RoomManager.GetInstance(); Room = roomManager.CreateNewRoom(this); // // Start the heartbeat timer. // _heartBeatTimer = new Timer(CheckHeartBeatTimer, null, 20000, TimerInterval); // // Set the client user state to default value. // _clientUserState = ClientUserState.InLobby; }
public void RemoveClient(Client client) { lock (clientListLock) { _globalClientList.Remove(client); } var db = Database.GetInstance(); if (client.UserInfo == null) { return; } var user = db.GetUserByEmail(client.UserInfo.EmailAddress); var friend = MessageReceiver.GetFriendFromUser(user); // // Remove the user from his room in case he is still part of one. // var roomManager = RoomManager.GetInstance(); roomManager.RemoveMemberfromRoom(client.Room.Host, client); // // Send a message saying that the user logged off to all of his friends who are online. // var friends = db.GetFriends(client.UserInfo.EmailAddress); if (null == friends) { return; } var onlineFriends = new List <Client>(); foreach (user frd in friends) { var c = GetClientFromEmailAddress(frd.email); if (null != c) { onlineFriends.Add(c); } } MessageSender.BroadcastMessage( onlineFriends, PacketType.s_UserLoggedOut, friend, client); }