From c457f3e221795dc666800c9169e5eb77bb472e0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Wed, 19 Apr 2023 19:55:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96signalr=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Admin.WebApi/Hubs/MessageHub.cs | 24 ++++++++++++++++++------ ZR.Admin.WebApi/Hubs/OnlineUsers.cs | 1 + 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ZR.Admin.WebApi/Hubs/MessageHub.cs b/ZR.Admin.WebApi/Hubs/MessageHub.cs index 46fc719..e685b16 100644 --- a/ZR.Admin.WebApi/Hubs/MessageHub.cs +++ b/ZR.Admin.WebApi/Hubs/MessageHub.cs @@ -2,16 +2,21 @@ using Infrastructure.Constant; using Infrastructure.Model; using IPTools.Core; -using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.SignalR; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using UAParser; 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 { + /// + /// msghub + /// public class MessageHub : Hub { //创建用户集合,用于存储所有链接的用户数据 @@ -43,14 +48,21 @@ namespace ZR.Admin.WebApi.Hubs var ip = HttpContextExtension.GetClientUserIp(App.HttpContext); var ip_info = IpTool.Search(ip); + ClientInfo clientInfo = HttpContextExtension.GetClientInfo(App.HttpContext); + string device = clientInfo.ToString(); + var userid = HttpContextExtension.GetUId(App.HttpContext); + string uuid = device + userid + ip; var user = clientUsers.Any(u => u.ConnnectionId == Context.ConnectionId); + var user2 = clientUsers.Any(u => u.Uuid == uuid); + //判断用户是否存在,否则添加集合 - if (!user && Context.User.Identity.IsAuthenticated) + if (!user2 && !user && Context.User.Identity.IsAuthenticated) { OnlineUsers users = new(Context.ConnectionId, name, userid, ip) { - Location = ip_info.City + Location = ip_info.City, + Uuid = uuid }; clientUsers.Add(users); Console.WriteLine($"{DateTime.Now}:{name},{Context.ConnectionId}连接服务端success,当前已连接{clientUsers.Count}个"); @@ -94,7 +106,7 @@ namespace ZR.Admin.WebApi.Hubs public async Task SendMessage(string connectId, string userName, string message) { Console.WriteLine($"{connectId},message={message}"); - + await Clients.Client(connectId).SendAsync("receiveChat", new { userName, message }); } } diff --git a/ZR.Admin.WebApi/Hubs/OnlineUsers.cs b/ZR.Admin.WebApi/Hubs/OnlineUsers.cs index 6f7c2c8..2229736 100644 --- a/ZR.Admin.WebApi/Hubs/OnlineUsers.cs +++ b/ZR.Admin.WebApi/Hubs/OnlineUsers.cs @@ -18,6 +18,7 @@ namespace ZR.Admin.WebApi.Hubs public DateTime LoginTime { get; set; } public string UserIP { get; set; } public string Location { get; set; } + public string Uuid{ get; set; } public OnlineUsers(string clientid, string name, long? userid, string userip) {