使用长轮询时使用/ signalr / ping调用

时间:2014-09-01 00:19:05

标签: asp.net signalr signalr.client

我正在使用SignalR进行长轮询。我发现用户会话在基于singalr的网页发出 / signar / ping 请求(as shown in this screenshot)后立即结束(正在调用ASP.NET Session_End)。我经历了http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events,但在问题之后找不到明确的答案。

  1. 如何从信号客户端网页上保持ASP.net用户会话的活动状态?
  2. / ping的实际目的是什么?
  3. 此/ ping呼叫的时间是否可配置?

1 个答案:

答案 0 :(得分:16)

/ signalr / ping请求的全部目的是使ASP.NET会话保持活动状态。通过以比会话超时短的常规间隔发出请求,会话永远不会过期,因为服务器应该在每个请求上重置超时。

在长轮询传输的情况下,这可能是不必要的,因为在给定默认配置的情况下,SignalR将每110秒强制执行一次新的长轮询 。即便如此,无论使用何种传输,SignalR都会默认每5分钟发出一次ping请求。这5分钟的间隔足够小,可以处理ASP.NET默认的20分钟会话超时。

您可以在调用$.connection.hub.start时将5分钟的ping时间间隔更改为自定义值,如下所示:

// Configure SignalR to ping the server every minute
$.connection.hub.start({ pingInterval: 60000 })//...

默认pingInterval为300000毫秒(5分钟)。您可以通过将pingInterval设置为空来禁用ping。