.Net Core之SignalR
.Net Core之SignalR
SignalR作为实时通讯框架,支持轮询和WebSocket,会自动选择服务器和客户端的最佳传输方式,很适合需要实时通讯的需求
-
引入
services.AddSignalR();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapHub<SignalRHub>("/signalRHub"); });
-
定义
SignalR的Hub类似于MVC的Controller,在hub里除了可以像Controller一样通过客户端调用服务端,还可以记录客户端在线状态,实现推送和客户端之间通讯的功能
public class SignalRHub : Hub { public SignalRHub() { } public override Task OnConnectedAsync() { Console.WriteLine("OnConnectedAsync:" + Context.ConnectionId); return base.OnConnectedAsync(); } public override async Task OnDisconnectedAsync(Exception exception) { Console.WriteLine("OnDisconnectedAsync:" + Context.ConnectionId); await base.OnDisconnectedAsync(exception); } public async Task DoWork() { //供客户端调用 } }