使用SignalR枢纽,连接了一段时间后失去了 - 为什么?(Using SignalR Hubs,

2019-09-17 08:31发布

在我的SignalR的应用程序,在页面上如预期回调被解雇。 如果页面留一段时间,回调不再调用该网页上,直到它被刷新。

我怀疑这可能是由于该网站的会话过期(使用客户端的会话ID调用客户端通知)。

我读到这里关于KeepAlive功能,并可以看到SignalR代码给它提供一些参考。 我不清楚,如果要实现客户端保持连接的需要,如果是这样,怎么样?

Answer 1:

我没有作任何实验或检查文档,但你的假设是有道理的。 SignalR不为各种充分的理由支持会话。 如果它不支持从会话读那么它是合理的期望,它不会刷新会话过期时间。 但是,如果你真的需要使用会话ID作为客户端ID(你不应该)则实现了一种保持活跃的很容易。 只要写一些JS调用最简单的方式在服务器(例如会话启用HTTP处理程序),而不做任何工作。 它只会刷新会话过期时间。



Answer 2:

看看http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events

  $.connection.hub.disconnected(function() {
      alert('disconnected')
      setTimeout(function() {
        alert('reconnecting')
        $.connection.hub.start();
      }, 5000); // Restart connection after 5 seconds.
    });


文章来源: Using SignalR Hubs, connection is lost after some time - why?