杀死SignalR跨域连接

时间:2016-09-02 02:03:38

标签: signalr

我不完全确定如何提出这个问题,所以情况如下:

  1. 我们有一个单页面应用程序连接到使用CORS进行跨域身份验证的SignalR中心
  2. 用户连接到集线器并打开浏览器窗口
  3. 我们删除了用户,但由于他们已经连接到集线器,因此只要他们返回该页面(无需重新加载),集线器就会重新连接
  4. 重新启动IIS无效
  5. 所以情况就是这样,我想我理解为什么正在发生,我不知道的是将来阻止这种情况发生的最佳做法(我原本以为会议到期但是从那以后这是一个单页面应用程序,只要它们不刷新,它就永远不会调用会话超时)。

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

    感谢您的指导!我被卡住了。

1 个答案:

答案 0 :(得分:4)

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

停止连接的一种方法是在客户端创建一个功能,然后从服务器

中调用它

客户端

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

服务器端

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