.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;
     }
 }
相关推荐
foggyprojects31 分钟前
一个企业查询问题,如何从自然语言走到 DSL 再走到 SQL
后端
掘金者阿豪34 分钟前
PDO连金仓数据库(下篇):预处理语句、大对象和批量操作
后端
RealPluto36 分钟前
Rancher证书轮换过期导致不能访问UI问题处理
后端
Asize37 分钟前
Bun + TypeScript 实战:从接口约束到 RESTful 路由设计
后端·typescript·代码规范
鱼人1 小时前
Go 操作 MySQL:常用写法与最佳实践
后端
挖坑的张师傅1 小时前
方便 Mac 本机运行 e2b 的沙箱方案 e2b-local
人工智能·后端
开心猴爷1 小时前
Flutter 如何自动上传 可以 IPA 把构建和上传分开处理
后端·ios
二月龙1 小时前
defer 执行顺序与底层原理,90% 的人都理解不全
后端
长大19881 小时前
新手常犯的 Go 语法错误,一次性帮你避坑
后端
小强19881 小时前
深入理解 Go 协程 Goroutine:并发编程的核心精髓
后端