asp.net mvc使用Signalr
注意,是asp.net mvc项目,不是core,代码不一样。
1. 在nuget安装Microsoft.AspNet.SignalR,安装最新版本就行(只要.net framework支持)。
2. 在nuget安装Microsoft.Owin,同样最新版本(有时项目里默认就有,但是旧版本并带有感叹说弃用之类的,更新到最新版本就行)
安装完上面两个后,项目文件里会多了个script文件夹,里面就是我们要用到的js文件。
在项目中添加两个文件Startup.cs和MyHub.cs(位置自己决定)。
Startup.cs
MyHub.cs
在前端页面引用三个js文件
<script src="~/jquery-3.4.1.min.js"></script>
<script src="~/jquery.signalR-2.4.3.min.js"></script>
<script src="~/signalr/hubs"></script>
并加上js代码
按上面操作,就可以正常连接到服务器收到信息了。
下面列举下我碰到的坑:
1. 一直提示websocks协议连接不上,而自动降级使用SSE(Signalr有三种协议,分别是 Web Socket, Server Sent Events 和Long Polling,一种连接不上,就自动降级使用下一种)。这个问题一般会是:没有安装websocket,按下面勾选上就行。

2. 需要在Web.config中加上(注意使用自己项目版本)。
3. 另外一个是遇到OnDisconnected没有触发,这个有点神奇,必须在前端随便加一个函数给服务端可调用的就行,像上面代码中的 myHub.client.disconnet = function () { };没其它实际意义,但加上就行。
4. 有时连接不上想看客户端日志,需要前端加上代码$.connection.hub.logging = true; 以chrome为例,F12打开DevTools,切换到Console,右边的Default Levels中勾选中Verbose,后才会显示连接日志。

浙公网安备 33010602011771号