IwbHub.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Abp.Dependency;
  5. using IwbZero.ToolCommon.StringModel;
  6. using Microsoft.AspNet.SignalR;
  7. namespace WeOnlineApp.Hubs
  8. {
  9. public class IwbHub:Hub, ITransientDependency
  10. {
  11. /// <summary>
  12. /// 注册组链接
  13. /// </summary>
  14. /// <param name="name"></param>
  15. public void RegisterGroup(string name)
  16. {
  17. Groups.Add(Context.ConnectionId, name);
  18. }
  19.   public static List<UserClient> UserList=> new List<UserClient>();
  20. /// <summary>
  21. /// 注册链接
  22. /// </summary>
  23. /// <param name="userNo"></param>
  24. public void RegisterClient(string userNo)
  25. {
  26. var user = UserList.FirstOrDefault(a => a.UserNo == userNo);
  27. if (user==null)
  28. {
  29. UserList.Add(new UserClient(userNo,Context.ConnectionId));
  30. }
  31. else
  32. {
  33. user.ConnectionId = Context.ConnectionId;
  34. user.LastDateTime=DateTime.Now;
  35. }
  36. Clean();
  37. }
  38. public string GetConnectionId(string userNo)
  39. {
  40. var user = UserList.FirstOrDefault(a => a.UserNo == userNo);
  41. Clean();
  42. return user?.ConnectionId;
  43. }
  44. public void SendCurrentScenePath(string no, string path,string name)
  45. {
  46. Clients.Group(no).GetCurrentScenePath(new
  47. {
  48. path,
  49. name
  50. }.Obj2String());
  51. }
  52. public void Clean()
  53. {
  54. var list = UserList.Where(a => a.LastDateTime.AddHours(1) < DateTime.Now).ToList();
  55. if (list.Any())
  56. {
  57. foreach (var userClient in list)
  58. {
  59. UserList.Remove(userClient);
  60. }
  61. }
  62. }
  63. public class UserClient
  64. {
  65. public UserClient(string userNo, string connectionId)
  66. {
  67. UserNo = userNo;
  68. ConnectionId = connectionId;
  69. LastDateTime = DateTime.Now;
  70. }
  71. public string UserNo { get; set; }
  72. public string ConnectionId { get; set; }
  73. public DateTime LastDateTime { get; set; }
  74. }
  75. }
  76. }