在我的 SignalR 应用程序中,回调在页面上按预期触发。如果页面离开一段时间,则在刷新之前不再在该页面上调用回调。
我怀疑这可能是由于站点的会话到期(使用客户端的会话 ID 来调用客户端通知)。
我在此处阅读了有关该KeepAlive
功能的信息,并且可以在 SignalR 代码中看到对它的一些引用。我不清楚是否需要实现客户端保持活动,如果需要,如何实现?
在我的 SignalR 应用程序中,回调在页面上按预期触发。如果页面离开一段时间,则在刷新之前不再在该页面上调用回调。
我怀疑这可能是由于站点的会话到期(使用客户端的会话 ID 来调用客户端通知)。
我在此处阅读了有关该KeepAlive
功能的信息,并且可以在 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 以最简单的方式调用服务器(例如启用 Session 的 HTTP 处理程序),而无需做任何工作。它仅用于刷新会话到期时间。