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

11
1个回答

22
整个/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设置为null来禁用ping。


谢谢 halter73,这正是我在寻找的。 - Raj
@halter73,您是在说长轮询将保持ASP.NET会话的活动状态,因此,如果它比ping时间更频繁发生,则ping是不必要的吗? - Mark
2
@Mark 对的。使用长轮询时应该不需要ping,因为该传输方式已经发送频繁的请求,但SignalR仍将发送ping请求。 - halter73
@halter73 我的ASP.Net会话是24小时,所以建议将ping间隔设置为null吗? - Ashish Shukla

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接