使用 SignalR 中心,连接会在一段时间后丢失 - 原因

本文关键字:原因 一段时间 中心 SignalR 连接 使用 | 更新日期: 2023-09-27 18:34:50

在我的 SignalR 应用中,回调按预期在页面上触发。 如果页面保留了一段时间,则在刷新页面之前,不会再在该页面上调用回调。

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

我在此处阅读了有关KeepAlive功能的信息,并且可以在 SignalR 代码中看到对它的一些引用。 我不清楚是否需要实现客户端保持活动状态,如果需要,如何实现?

使用 SignalR 中心,连接会在一段时间后丢失 - 原因

看看 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.
    });
我没有

做任何实验或检查文档,但你的假设是有道理的。由于各种充分的原因,SignalR 不支持会话。如果它不支持从会话读取,则可以合理地预期它不会刷新会话过期时间。但是,如果您确实需要使用会话 ID 作为客户端 ID(您不应该这样做(,那么实现一种保持活动状态很容易。只需编写一些JS即可以最简单的方式调用服务器(例如启用会话的HTTP处理程序(,而无需执行任何工作。它仅用于刷新会话过期时间。