推荐答案
// www.javascriptcn.com code example
// 1. 安装 SignalR 包
// 在 NuGet 包管理器中安装 Microsoft.AspNetCore.SignalR 包
// 2. 创建 SignalR Hub
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
// 3. 配置 SignalR 服务
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
}
// 4. 配置 SignalR 路由
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chatHub");
});
}
// 5. 客户端连接 SignalR
// 在客户端 JavaScript 中
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chatHub")
.build();
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user}: ${message}`);
});
connection.start().catch(err => console.error(err.toString()));本题详细解读
1. 安装 SignalR 包
在开始使用 SignalR 之前,首先需要通过 NuGet 包管理器安装 Microsoft.AspNetCore.SignalR 包。这个包包含了 SignalR 的核心功能,允许你在 ASP.NET Core 应用中构建实时功能。
2. 创建 SignalR Hub
SignalR Hub 是 SignalR 的核心组件,它负责处理客户端与服务器之间的通信。你可以通过继承 Hub 类来创建一个自定义的 Hub。在这个例子中,我们创建了一个 ChatHub,它包含一个 SendMessage 方法,用于向所有连接的客户端发送消息。
3. 配置 SignalR 服务
在 Startup.cs 文件的 ConfigureServices 方法中,你需要调用 services.AddSignalR() 来注册 SignalR 服务。这一步是必要的,因为它将 SignalR 添加到 ASP.NET Core 的依赖注入容器中。
4. 配置 SignalR 路由
在 Startup.cs 文件的 Configure 方法中,你需要配置 SignalR 的路由。通过调用 endpoints.MapHub<ChatHub>("/chatHub"),你可以将 ChatHub 映射到一个特定的 URL 路径(例如 /chatHub),客户端将通过这个路径连接到 SignalR Hub。
5. 客户端连接 SignalR
在客户端(例如浏览器中的 JavaScript),你可以使用 signalR.HubConnectionBuilder 来创建一个 SignalR 连接,并通过 withUrl 方法指定 SignalR Hub 的 URL。然后,你可以通过 connection.on 方法来监听服务器发送的消息,并通过 connection.start 方法来启动连接。
通过以上步骤,你就可以在 C# 中使用 SignalR 构建一个实时应用了。