SignalR 如何使用
时间: 2024-11-20 12:09:57 浏览: 4
SignalR 是一个由 Microsoft 开发的开源库,用于实现实时 Web 和云应用程序中的双向通信。它是基于 .NET 技术栈,利用服务器推送(Server-Sent Events, SSE)和 WebSocket 协议,使得前端和后端能够实时地交换数据。在 ASP.NET Core 中集成 SignalR 可以方便地构建聊天应用、通知系统或其他需要即时更新的场景。
下面是使用 SignalR 的基本步骤:
1. **安装依赖**:
在 ASP.NET Core 应用中,通过 NuGet 包管理器添加 `Microsoft.AspNetCore.SignalR` 和相关包。
2. **创建服务**:
在项目中创建一个 Hub 类,这是处理客户端连接和消息传输的核心组件。Hub 类继承自 `HubContext<T>` 或 `Hub`, 并定义公开的方法(`Clients.All/Group` 方法),这些方法会被客户端订阅并触发。
```csharp
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
```
3. **客户端连接**:
在前端,你可以使用 JavaScript 的 SignalR 客户端库(`@microsoft/signalr`)来建立连接。首先注册服务,然后创建连接实例。
```javascript
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chat")
.build();
connection.on('ReceiveMessage', (user, message) => {
// 处理接收到的消息
});
connection.start().catch(err => console.error(err.toString()));
```
4. **发送和接收消息**:
客户端可以调用 Hub 中声明的方法来发送消息,同时监听来自服务器的事件。
5. **群组和私聊**:
如果你想区分不同用户或频道,可以在连接和消息传递上使用 Group 方法,如 `Clients.Group("group-id").SendAsync("ReceiveMessage")`。
6. **关闭连接**:
当不再需要时,可以通过 `.stop()` 或 `.dispose()` 关闭连接。
阅读全文