asp.net - 使用长轮询时使用/signalr/ping 调用

标签 asp.net signalr signalr.client

我正在对 SignalR 使用长轮询。我发现用户 session 在基于 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但无法找出以下问题的明确答案。

  • 如何从信号客户端网页保持 ASP.net 用户 session ?
  • /ping 的实际目的是什么?
  • 此/ping 调用的时间是否可配置?
  • 最佳答案

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

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

    您可以在调用 $.connection.hub.start 时将 5 分钟 ping 间隔更改为自定义值。像这样:

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

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

    关于asp.net - 使用长轮询时使用/signalr/ping 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25597468/

    相关文章:

    c# - 当客户端关闭连接时,IIS/ASP.NET 可以中止 HTTP 请求吗?

    signalr - 有没有办法获得 Signalr 集线器组中的连接数?

    c# - 实现控制台客户端 signalR 和 self 主机 signalR?

    asp.net - asp .net 一个控件的多个验证器

    c# - Microsoft.Reporting.WebForms.ReportViewer contol 在 ToolBar 中添加自定义控件

    c# - Context.Request.Cookies 和 Context.RequestCookies 之间的 SignalR 区别

    c# - SignalR Hub 上下文中没有可用的客户端

    signalr.client - 如何捕获 SignalR native 客户端与服务器失去连接

    signalr - 启动时调用 SignalR 客户端方法

    asp.net - MVC 4 子目录中的 web.config