.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;
     }
 }
相关推荐
暮色妖娆丶23 分钟前
不过是吃了几年互联网红利罢了,我高估了自己
java·后端·面试
UrbanJazzerati34 分钟前
Python Scrapling:小白也能轻松掌握的现代网页抓取工具
后端·面试
老张的码37 分钟前
飞书 × OpenClaw 接入指南
人工智能·后端
希克厉1 小时前
记录安装wsl2踩的一个坑
后端
zone77391 小时前
004:RAG 入门-LangChain读取PDF
后端·python·面试
漫霂1 小时前
基于redis实现登录校验
redis·后端
zone77391 小时前
005:RAG 入门-LangChain读取表格数据
后端·python·agent
用户7344028193421 小时前
mysql如何存储boolean类型
后端
golang学习记1 小时前
Fiber v3 适配器模式:17 种写法随便用,老代码"即插即用"🔌
后端·go
用户020742201751 小时前
从零到一:用 Rust 实现一个简单的区块链
后端