2017-08-09 34 views
0

我正在使用SignalR - 傳輸類型longPolling。我能夠看到功能按預期工作。實時,我可以看到有相當大數量的signalR調用嚴重影響了性能。Signalr調用與longPolling傳輸類型相當大 - 性能影響

看來,基於我的分析,longPolling會創建連接並使用它並關閉它。然後再次連接將按需創建。我覺得,這可能是在某個時間點看到大量signalR呼叫的原因。

您可以分享您的想法解決/避免大量的SignalR電話?

當我嘗試使用foreverFrame作爲傳輸類型時,SignalR連接未啓用。我可以在控制檯中看到以下錯誤。

SignalR:無法使用永久幀源連接,它在3000s後超時 SignalR:永久停止幀 SignalR:沒有傳輸可以成功初始化。嘗試指定一個不同的傳輸方式或根本不執行自動初始化 啓動Signalr Hub時發生問題。

回答

0

這似乎是基於文檔的長輪詢的默認行爲 - 長輪詢不會創建持久連接,而是使用請求保持打開的狀態輪詢服務器,直到服務器響應,此時連接關閉,並立即請求新的連接。這可能會在連接重置時引入一些延遲。

您對foreverFrame的使用可能無法正常工作,因爲傳輸在您使用的瀏覽器中不可用。

我還沒有理解爲什麼有人會強制運輸到一個特定的。可能,我只是沒有遇到這種情況下,它是必需的。

SignalR將處理確定每個客戶使用哪個傳輸的方面,這是它的一大優點。

+0

感謝您的輸入。有沒有辦法避免來自signalr/poll的輪詢呼叫?transport = longPolling ....? – SNithish

+0

感謝您的輸入。有沒有辦法避免來自signalr/poll的輪詢呼叫?transport = longPolling ....? ,這樣我的服務器就不會遇到那麼多的請求。 您的意思是,我們不需要使用下面的代碼段明確提及傳輸類型: $ .connection.hub.start({transport:「longPolling」})? OR $ .connection.hub.start({運輸:「foreverFrame」}) 如果我們希望signalR通過自身來確定運輸類型,然後做我們需要刪除上面的設置/我們需要設置爲自動還是無?你能分享你的想法嗎? – SNithish

+0

任何最新版本的signalR版本都將有助於避免大量信號/輪詢?transport = longpolling .... call每隔2分鐘會觸發一次服務器?目前我正在使用SignalR1.1.2版本。 – SNithish