Asp.net 使用长轮询时使用/signal/ping调用

Asp.net 使用长轮询时使用/signal/ping调用,asp.net,signalr,signalr.client,Asp.net,Signalr,Signalr.client,我正在用信号器进行长轮询。我发现用户会话在基于信号的网页发出/signar/ping请求()之后立即结束(正在调用ASP.NET会话)。下面的问题我看了一遍,但找不出明确的答案 如何从Signal客户端网页保持ASP.net用户会话的活动状态 /ping的实际目的是什么 此/ping呼叫的时间是否可配置 /signalr/ping请求的全部目的是使ASP.NET会话保持活动状态。通过以比会话超时短的常规间隔发出请求,会话将永远不会过期,因为服务器应在每个请求上重置超时 在长轮询传输的情况下,这可

我正在用信号器进行长轮询。我发现用户会话在基于信号的网页发出/signar/ping请求()之后立即结束(正在调用ASP.NET会话)。下面的问题我看了一遍,但找不出明确的答案

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

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

    在长轮询传输的情况下,这可能是不必要的,因为给定默认配置,信号器将至少每110秒强制一次新的长轮询。即使如此,默认情况下,无论使用何种传输,信号器都会每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,这正是我想要的。@halter73,您是说长轮询将使ASP.NET会话保持活动状态,因此,如果发生的频率高于ping时间,那么ping是不必要的吗?@Mark Right。长轮询不需要ping,因为该传输已发送频繁的请求,但signer仍将发送ping请求。@halter73我的ASP.Net会话为24小时,因此建议将ping间隔设置为null吗?