![bfb3988c2d7afa63001690ba4944dfcc.png](https://i-blog.csdnimg.cn/blog_migrate/dc4e510877b5c16c41c7ae751bd77fae.jpeg)
引言
在现代web开发中常常需要消息的及时性或者说数据的实时性,现在WebSocket的出现让这样的需求变得简单,而现实中也出现了对WebSocket的一些封装或者扩展,Signalr的底层采用的是优先websocket实现,同时兼顾其它方式,在asp.net core中我们就可以使用Signalr来进行服务器端的主动推送来实现将数据实时推送到客户端,我们使用一个简单的例子来了解下SignalR的使用。
新建项目
我们新建一个asp.net core web的项目,我这里使用的是VS2019版本,名称自己随意起,然后我们先安装项目中依赖的一些js,服务端项目自带,我们按照我的截图一步步来(以下案例来自微软官方),在本地测试通过
- 右击项目打开添加-客户端库
![64bbf2eec1a8ce0a180b99ceceaad8dd.png](https://i-blog.csdnimg.cn/blog_migrate/4b5647f0a6b5c2826872cc94e7d245ae.jpeg)
我们在弹出的窗口提供程序选择unpkg,然后在库中填入@aspnet/signalr@1,回车
![d016df936920958619c09cf4aa4b12d0.png](https://i-blog.csdnimg.cn/blog_migrate/8a6b3d48fb1eb63ac2a5d933c651fea8.jpeg)
这个地方我么选择压缩的或者不压缩的都可以,在生产环境下使用压缩的就可以了。下面我们先进行服务端一些代码的编写
- 新建一个继承自Hub类,这是Signalr所需要的
我这里新建一个Myhub文件夹,然后新建了一个ChatHub类,代码内容很简单,如下(记得添加using Microsoft.AspNetCore.SignalR;命名空间)
using Microsoft.AspNetCore.SignalR;using System.Threading.Tasks;namespace WebApp.MyHub{ public class ChatHub : Hub { public async Task SendMessage(string user, string message) { //广播消息 await Clients.All.SendAsync("ReceiveMessage