.NET 使用 SignalR 实现实时消息推送,核心在于建立一个服务器与客户端的双向通信通道。整个过程围绕 Hub(集线器)展开,通过简单的配置和代码编写,就能让服务端主动向连接的客户端推送数据。
搭建SignalR服务端
在 .NET 项目中启用 SignalR,需要完成基础配置并创建 Hub 类。
通过 NuGet 安装 Microsoft.AspNetCore.SignalR 包,这是使用 SignalR 的前提。 在 Program.cs 或 Startup.cs 中注册 SignalR 服务。例如,在 Program.cs 里调用 builder.Services.AddSignalR()。 配置中间件,映射 Hub 的访问路径。比如使用 app.MapHub实现消息推送逻辑
Hub 类是消息传递的核心,你可以在这里控制消息发送给谁以及发送什么内容。
利用 Hub 的 Clients 属性来指定接收者。例如 Clients.All.SendAsync("ReceiveMessage", data) 可以将消息推送给所有已连接的客户端。 如果只想推送给特定用户或组,可以使用 Clients.User(userId) 或 Clients.Group(groupName)。 在方法中调用 SendAsync,第一个参数是客户端监听的事件名称,后续参数是传递的数据。服务端只需执行这个方法,客户端就会实时收到通知。连接客户端并接收消息
客户端可以是浏览器、移动应用或其他 .NET 程序,都需要建立连接并监听服务端推送。
在前端页面引入 signalr.js 客户端库,然后创建 HubConnection 对象,指向服务端的 Hub 地址,如 "/chathub"。 调用 start() 方法启动连接。成功后,客户端就处于待命状态。 使用 connection.on("ReceiveMessage", (data) => { /* 处理数据 */ }) 来监听服务端推送的消息。括号里的函数会在每次收到消息时执行。 客户端也能反过来调用 Hub 中的方法,实现双向通信,比如发送聊天内容。基本上就这些步骤,不复杂但容易忽略细节。
