.net:SignalR通信服务

一、program添加服务

scss 复制代码
//添加SignalR服务
builder.Services.AddSignalR();

//映射通讯中心的请求路径
app.MapHub<ChatHub>("/Hubs");

二、工具类封装

csharp 复制代码
  //注意前端接受参数关键词:ReceivePublicMsg

 public class ChatHub : Hub
 {
     public async Task SendMsg(string userId, string msg)
     {
         string sendMsg = $"服务端发起的消息,user={userId},msg={msg}";
         //服务端推送给所有客户端
         await Clients.All.SendAsync("ReceivePublicMsg", sendMsg);
         await Clients.User(userId).SendAsync(msg);
         //服务端推送给 除自已以外 的所有客户端
         await Clients.Others.SendAsync("ReceivePublicMsg", sendMsg); 
     }

     //客户端成功连接时,会触发此方法
     public override Task OnConnectedAsync()
     {
         var id = Context.ConnectionId;
         SendMsg(id, "测试消息");
         return Task.CompletedTask;
     }

     //客户端断开连接时,会触发此方法
     public override Task OnDisconnectedAsync(Exception? exception)
     {
         var id = Context.ConnectionId;
         return Task.CompletedTask;
     }
 }
相关推荐
李建军4 小时前
界止签章宗地号替换工具
c#
qq_425263324 小时前
.net开发框架和语言
c#
武藤一雄4 小时前
C# 关于多线程如何实现需要注意的问题(持续更新)
windows·后端·microsoft·c#·.net·.netcore·死锁
flysh055 小时前
C# 架构设计:接口 vs 抽象类的深度选型指南
开发语言·c#
程序新视界5 小时前
为什么不建议基于Multi-Agent来构建Agent工程?
人工智能·后端·agent
flysh055 小时前
C# 中类型转换与模式匹配核心概念
开发语言·c#
Victor3565 小时前
Hibernate(29)什么是Hibernate的连接池?
后端
Victor3565 小时前
Hibernate(30)Hibernate的Named Query是什么?
后端
源代码•宸6 小时前
GoLang八股(Go语言基础)
开发语言·后端·golang·map·defer·recover·panic
czlczl200209256 小时前
OAuth 2.0 解析:后端开发者视角的原理与流程讲解
java·spring boot·后端