private void ThreadStart() { while (heartThread.IsAlive) { if (socketServerManager.GetClientList().Count > 0) { UserToken[] userList = socketServerManager.GetClientList().ToArray(); for (int i = 0; i < userList.Length; i++) { //心跳超时 if ((DateTime.Now - userList[i].HeartTime).TotalSeconds > heartOutTime) { Console.WriteLine("Heart out time:" + userList[i].UserName); //关闭客户端 socketServerManager.CloseClient(userList[i]); } } } //每10秒检测一次 for (int i = 0; i < 10; i++) { if (!startCheck) { return; } Thread.Sleep(1000); } } }
/// <summary> /// 通知所有用户房间列表有更新,发送新的房间列表 /// </summary> internal void OnRoomListUpdate() { RoomList list = new RoomList(); for (int i = 0; i < socketServerManager.GetRoomList().Count; i++) { string str = socketServerManager.GetRoomList()[i].RoomName + "," + socketServerManager.GetRoomList()[i].UserList.Count; list.List.Add(str); } DataModel model = new DataModel(); model.Type = DataType.TYPE_SPORDER; model.Request = DataRequest.GET_ROOMLIST_S; model.Message = DataCodec.TobyteArray(list); for (int i = 0; i < socketServerManager.GetClientList().Count; i++) { Send(socketServerManager.GetClientList()[i], model); } }