diff --git a/Infrastructure/Constant/HubsConstant.cs b/Infrastructure/Constant/HubsConstant.cs index ad8c040..d81b7f8 100644 --- a/Infrastructure/Constant/HubsConstant.cs +++ b/Infrastructure/Constant/HubsConstant.cs @@ -12,5 +12,6 @@ namespace Infrastructure.Constant public static string ReceiveNotice = V; public static string OnlineNum = "onlineNum"; public static string MoreNotice = "moreNotice"; + public static string OnlineUser = "onlineUser"; } } diff --git a/ZR.Admin.WebApi/Hubs/MessageHub.cs b/ZR.Admin.WebApi/Hubs/MessageHub.cs index 64ef549..b835b1b 100644 --- a/ZR.Admin.WebApi/Hubs/MessageHub.cs +++ b/ZR.Admin.WebApi/Hubs/MessageHub.cs @@ -2,10 +2,14 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Infrastructure; using Infrastructure.Constant; using Infrastructure.Model; using Microsoft.AspNetCore.SignalR; +using ZR.Admin.WebApi.Extensions; +using ZR.Admin.WebApi.Framework; using ZR.Model; +using ZR.Model.System; using ZR.Service.System.IService; namespace ZR.Admin.WebApi.Hubs @@ -16,7 +20,7 @@ namespace ZR.Admin.WebApi.Hubs private static readonly List clientUsers = new(); private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private ISysNoticeService SysNoticeService; - + public MessageHub(ISysNoticeService noticeService) { SysNoticeService = noticeService; @@ -38,18 +42,19 @@ namespace ZR.Admin.WebApi.Hubs public override Task OnConnectedAsync() { var name = Context.User.Identity.Name; - + LoginUser loginUser = JwtUtil.GetLoginUser(App.HttpContext); var user = clientUsers.Any(u => u.ConnnectionId == Context.ConnectionId); //判断用户是否存在,否则添加集合 if (!user && Context.User.Identity.IsAuthenticated) { - clientUsers.Add(new OnlineUsers(Context.ConnectionId, name)); + clientUsers.Add(new OnlineUsers(Context.ConnectionId, name, loginUser?.UserId)); Console.WriteLine($"{DateTime.Now}:{name},{Context.ConnectionId}连接服务端success,当前已连接{clientUsers.Count}个"); //Clients.All.SendAsync("welcome", $"欢迎您:{name},当前时间:{DateTime.Now}"); Clients.All.SendAsync(HubsConstant.MoreNotice, SendNotice()); } Clients.All.SendAsync(HubsConstant.OnlineNum, clientUsers.Count); + Clients.All.SendAsync(HubsConstant.OnlineUser, clientUsers); return base.OnConnectedAsync(); } @@ -66,6 +71,7 @@ namespace ZR.Admin.WebApi.Hubs Console.WriteLine($"用户{user?.Name}离开了,当前已连接{clientUsers.Count}个"); clientUsers.Remove(user); Clients.All.SendAsync(HubsConstant.OnlineNum, clientUsers.Count); + Clients.All.SendAsync(HubsConstant.OnlineUser, clientUsers); } return base.OnDisconnectedAsync(exception); } diff --git a/ZR.Admin.WebApi/Hubs/OnlineUsers.cs b/ZR.Admin.WebApi/Hubs/OnlineUsers.cs index 78aefe2..3ad5f43 100644 --- a/ZR.Admin.WebApi/Hubs/OnlineUsers.cs +++ b/ZR.Admin.WebApi/Hubs/OnlineUsers.cs @@ -13,15 +13,16 @@ namespace ZR.Model /// /// 用户id /// - public int Userid { get; set; } + public long? Userid { get; set; } public string Name { get; set; } public DateTime LoginTime { get; set; } - public OnlineUsers(string clientid, string name) + public OnlineUsers(string clientid, string name, long? userid) { ConnnectionId = clientid; Name = name; LoginTime = DateTime.Now; + Userid = userid; } } }