终止 SignalR 跨域连接

Killing SignalR cross domain connection

我什至不确定如何问这个问题,所以情况是这样的:

  1. 我们有一个连接到使用 CORS 进行跨域身份验证的 SignalR 集线器的单页应用程序
  2. 用户连接到集线器并使浏览器保持打开状态window
  3. 我们删除了用户,但由于他们已经连接到集线器,只要他们返回该页面(无需重新加载),集线器就会重新连接
  4. 重启IIS没有效果

情况就是这样,我想我理解为什么会发生这种情况,但我不知道的是防止这种情况在未来发生的最佳做法(我最初认为使会话过期,但由于这是一个单页应用程序,只要它们不刷新,它就永远不会调用会话超时)。

服务器端是否有一种简单的方法来终止连接(我们记录所有连接,因此有连接 ID 等)?

感谢指导!我卡住了。

您无法从服务器端停止连接。要停止连接,您需要从客户端调用 $.connection.hub.stop();

停止连接的一种方法是在客户端创建一个函数,然后从服务器调用它

客户端

myHub.client.serverWantDisconnect = function (value) {
    $.connection.hub.stop();
};

服务器端

Clients.Client(Context.ConnectionId).serverWantDisconnect();