| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- 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
- {
- /// <summary>
- /// 注册组链接
- /// </summary>
- /// <param name="name"></param>
- public void RegisterGroup(string name)
- {
- Groups.Add(Context.ConnectionId, name);
- }
- public static List<UserClient> UserList=> new List<UserClient>();
- /// <summary>
- /// 注册链接
- /// </summary>
- /// <param name="userNo"></param>
- 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; }
- }
- }
- }
|