【问题标题】:Killing SignalR cross domain connection杀死 SignalR 跨域连接
【发布时间】:2016-09-02 11:12:08
【问题描述】:

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

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

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

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

感谢指导!我被卡住了。

【问题讨论】:

    标签: signalr


    【解决方案1】:

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

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

    客户端

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

    服务器端

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

    【讨论】:

    • 是的,我就是这么想的。我想到了这个解决方法,只是觉得应该有更好的选择。我会将此标记为答案,因为这就是我最终要做的。
    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多