Asp.net

使用長輪詢時使用 /signalr/ping 呼叫

  • September 3, 2014

我正在使用 SignalR 的長輪詢。我發現在基於 singalr 的網頁發出*/signar/ping*請求(如本螢幕截圖所示)之後,使用者會話結束(正在呼叫 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 呼叫的時間是否可配置?

/signalr/ping 請求的全部目的是保持 ASP.NET 會話處於活動狀態。通過以比會話超時更短的定期間隔發出請求,會話不應過期,因為伺服器應重置每個請求的超時。

在長輪詢傳輸的情況下,這可能是不必要的,因為在預設配置下,SignalR 將至少每 110 秒強制進行一次新的長輪詢。即便如此,無論使用何種傳輸方式,SignalR 都會預設每 5 分鐘發出一次 ping 請求。這個 5 分鐘的時間間隔足夠小,可以處理 ASP.NET 的預設 20 分鐘會話超時。

您可以在呼叫中將 5 分鐘 ping 間隔更改為自定義值,$.connection.hub.start如下所示:

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

預設pingInterval值為 300000 毫秒(5 分鐘)。pingInterval您可以通過設置為 null來禁用 ping 。

引用自:https://stackoverflow.com/questions/25597468