Signalr 终止信令器跨域连接

Signalr 终止信令器跨域连接,signalr,Signalr,我甚至不知道该怎么问这个问题,所以情况如下: 我们有一个单页应用程序,它连接到使用CORS进行跨域身份验证的SignalR hub 用户连接到中心并保持浏览器窗口打开 我们删除了用户,但由于他们已经连接到集线器,因此只要他们返回到该页面(无需重新加载),集线器就会重新连接 重新启动IIS无效 这就是情况,我想我理解为什么会发生这种情况,我不知道的是防止将来发生这种情况的最佳实践(我最初认为会终止会话,但由于这是一个单页应用程序,只要它们不刷新,它就不会调用会话超时) 服务器端是否有一种简单的方法

我甚至不知道该怎么问这个问题,所以情况如下:

  • 我们有一个单页应用程序,它连接到使用CORS进行跨域身份验证的SignalR hub
  • 用户连接到中心并保持浏览器窗口打开
  • 我们删除了用户,但由于他们已经连接到集线器,因此只要他们返回到该页面(无需重新加载),集线器就会重新连接
  • 重新启动IIS无效
  • 这就是情况,我想我理解为什么会发生这种情况,我不知道的是防止将来发生这种情况的最佳实践(我最初认为会终止会话,但由于这是一个单页应用程序,只要它们不刷新,它就不会调用会话超时)

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


    谢谢你的指导!我卡住了。

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

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

    客户端

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

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

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

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

    客户端

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

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

    是的,我就是这么想的。我想到了这个解决办法,只是觉得应该有更好的选择。我会把这个标记为答案,因为这就是我最后要做的。是的,这就是我想的。我想到了这个解决办法,只是觉得应该有更好的选择。我将把这个标记为答案,因为这就是我最终要做的。