终止 SignalR 跨域连接
Killing SignalR cross domain connection
我什至不确定如何问这个问题,所以情况是这样的:
- 我们有一个连接到使用 CORS 进行跨域身份验证的 SignalR 集线器的单页应用程序
- 用户连接到集线器并使浏览器保持打开状态window
- 我们删除了用户,但由于他们已经连接到集线器,只要他们返回该页面(无需重新加载),集线器就会重新连接
- 重启IIS没有效果
情况就是这样,我想我理解为什么会发生这种情况,但我不知道的是防止这种情况在未来发生的最佳做法(我最初认为使会话过期,但由于这是一个单页应用程序,只要它们不刷新,它就永远不会调用会话超时)。
服务器端是否有一种简单的方法来终止连接(我们记录所有连接,因此有连接 ID 等)?
感谢指导!我卡住了。
您无法从服务器端停止连接。要停止连接,您需要从客户端调用 $.connection.hub.stop();
停止连接的一种方法是在客户端创建一个函数,然后从服务器调用它
客户端
myHub.client.serverWantDisconnect = function (value) {
$.connection.hub.stop();
};
服务器端
Clients.Client(Context.ConnectionId).serverWantDisconnect();
我什至不确定如何问这个问题,所以情况是这样的:
- 我们有一个连接到使用 CORS 进行跨域身份验证的 SignalR 集线器的单页应用程序
- 用户连接到集线器并使浏览器保持打开状态window
- 我们删除了用户,但由于他们已经连接到集线器,只要他们返回该页面(无需重新加载),集线器就会重新连接
- 重启IIS没有效果
情况就是这样,我想我理解为什么会发生这种情况,但我不知道的是防止这种情况在未来发生的最佳做法(我最初认为使会话过期,但由于这是一个单页应用程序,只要它们不刷新,它就永远不会调用会话超时)。
服务器端是否有一种简单的方法来终止连接(我们记录所有连接,因此有连接 ID 等)?
感谢指导!我卡住了。
您无法从服务器端停止连接。要停止连接,您需要从客户端调用 $.connection.hub.stop();
停止连接的一种方法是在客户端创建一个函数,然后从服务器调用它
客户端
myHub.client.serverWantDisconnect = function (value) {
$.connection.hub.stop();
};
服务器端
Clients.Client(Context.ConnectionId).serverWantDisconnect();