.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;
     }
 }
相关推荐
无限大68 分钟前
为什么显示器分辨率越高越清晰?——从像素到 4K/8K 的视觉革命
后端
阿苟14 分钟前
nginx部署踩坑
前端·后端
Yuuuuuuu17 分钟前
WPF基于Canvas绘制多边形ROI
c#
缺点内向27 分钟前
如何在 C# 中重命名 Excel 工作表并设置标签颜色
开发语言·c#·excel
ChineHe33 分钟前
Gin框架基础篇001_路由与路由组详解
后端·golang·gin
神奇小汤圆35 分钟前
深入理解Linux IPIP隧道:原理、配置与实战
后端
计算机毕设VX:Fegn089541 分钟前
计算机毕业设计|基于springboot + vue酒店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
laozhoy11 小时前
深入理解Go语言errors.As方法:灵活的错误类型识别
开发语言·后端·golang
周杰伦_Jay1 小时前
【Go 语言】核心特性、基础语法及面试题
开发语言·后端·golang