using System; using System.Collections.Generic; using System.Linq; using Abp.Dependency; using IwbZero.ToolCommon.StringModel; using Microsoft.AspNet.SignalR; namespace WeOnlineApp.Hubs { public class IwbHub:Hub, ITransientDependency { /// /// 注册组链接 /// /// public void RegisterGroup(string name) { Groups.Add(Context.ConnectionId, name); }   public static List UserList=> new List(); /// /// 注册链接 /// /// public void RegisterClient(string userNo) { var user = UserList.FirstOrDefault(a => a.UserNo == userNo); if (user==null) { UserList.Add(new UserClient(userNo,Context.ConnectionId)); } else { user.ConnectionId = Context.ConnectionId; user.LastDateTime=DateTime.Now; } Clean(); } public string GetConnectionId(string userNo) { var user = UserList.FirstOrDefault(a => a.UserNo == userNo); Clean(); return user?.ConnectionId; } public void SendCurrentScenePath(string no, string path,string name) { Clients.Group(no).GetCurrentScenePath(new { path, name }.Obj2String()); } public void Clean() { var list = UserList.Where(a => a.LastDateTime.AddHours(1) < DateTime.Now).ToList(); if (list.Any()) { foreach (var userClient in list) { UserList.Remove(userClient); } } } public class UserClient { public UserClient(string userNo, string connectionId) { UserNo = userNo; ConnectionId = connectionId; LastDateTime = DateTime.Now; } public string UserNo { get; set; } public string ConnectionId { get; set; } public DateTime LastDateTime { get; set; } } } }