- 创建一个SignalR Hub类,它将定义客户端可以连接的方法:
using Microsoft.AspNetCore.SignalR;
namespace MyProject.Hubs
{
public class MyHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
- 在Startup.cs文件的ConfigureServices方法中注册SignalR服务:
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
}
- 在Startup.cs文件的Configure方法中启用SignalR路由:
app.UseSignalR(routes =>
{
routes.MapHub("/myhub");
});
- 建立客户端连接:
const connection = new signalR.HubConnectionBuilder()
.withUrl("/myhub")
.build();
- 在客户端上定义消息处理程序以接收来自服务器的消息:
connection.on("ReceiveMessage", function (user, message) {
console.log(user + " says " + message);
});
- 启动连接并发送消息:
connection.start().then(function () {
connection.invoke("SendMessage", user, message);
}).catch(function (err) {
return console.error(err.toString());
});