我使用SignalR 0.5.3與集線器和我明確地設定輸送到長輪詢是這樣的:SignalR長輪詢傳輸
$.connection.hub.start({ transport: 'longPolling' }, function() {
console.log('connected');
});
與像這樣的結構(在的global.asax.cs Application_Start方法中):
GlobalHost.DependencyResolver.UseRedis(server, port, password, pubsubDB, "FooBar");
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(2);
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(15);
但是,長輪詢在開發(IIS Express)和生產(IIS 7.5)環境中似乎都不起作用。連接似乎是正確的,但長時間輪詢請求總是超時(大約2分鐘後),然後重新連接。來自IIS的日誌是here。從第一個響應超時要求:
{"MessageId":"3636","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}
超時重新連接回應是這樣的:
{"MessageId":"3641","Messages":[],"Disconnect":false,"TimedOut":true,"TransportData":{"Groups":["NotificationHub.56DDB6692001Ex"],"LongPollDelay":0}}
我希望關於這個問題的任何幫助。謝謝。
編輯
如果重新連接意味着新的長輪詢週期的開始爲什麼它〜2分鐘後,當在的global.asax.cs保持活動設置被設置爲15秒啓動?與此問題是,我有一個反向代理在IIS前超時25秒後保持活動請求,因此,當達到此反向代理超時時,我得到504響應。
我不確定你描述的是什麼問題。超時發生在你沒有得到答案時,完全是由設計決定的。有什麼問題? – davidfowl
@dfowler:那麼重新連接意味着新的長輪詢週期的開始?爲什麼在將KeepAlive設置爲15秒後,約2分鐘後超時?查看更新的問題。 – yojimbo87
保持活力不適合長時間(它沒有意義)。 LongPolling默認等待2分鐘,您可以將其擴展爲適用於您的環境的任何內容。我仍然不理解問題。你只是問它是如何工作的? – davidfowl