2013-11-01 39 views
1

我遇到了在我的集線器的OnDisconnected事件發生在Chrome瀏覽器的頁面刷新的asp.net mvc動作之後,但是對於FireFox和IE而言,行爲不同,事件在相關的asp.net mvc動作之前被觸發。這是否有任何固定的規則?SignalR hub OnDisconnected在不同瀏覽器的點火時間在頁面重新載入後

訂單對我來說很重要,至少我希望它對所有瀏覽器都是一樣的,有沒有什麼方法可以確保相同的訂單?

+0

你有問題的答案嗎?下面不是我正在尋找的答案。我遇到了同樣的問題,因爲Chrome在MVC操作後觸發了OnDisconnected。你有這個黑客嗎? – bdparrish

+0

嗯,我不得不在架構中進行更改,以便我不需要依賴某個順序。我目前沒有解決方案,但我相信我使用數據庫來保存有關事件的信息,然後在一段時間後處理它(我有一個運行計時器)。所以這不是完全實時的,但延遲了幾秒鐘,但是它幫助我獨立於動作/事件觸發順序。 – CoinFlip

回答

2

MVC操作與否您無法確保訂單。

原因如下:當用戶嘗試導航離開具有活動SignalR連接的頁面時,SignalR將嘗試通過服務器通知服務器客戶端連接將停止。如果我們的「盡力而爲」嘗試未能到達服務器,服務器將在稍後OnDisconnected事件觸發的可配置「DisconnectTimeout」之後「忘記」用戶。如果我們的「盡力而爲」嘗試成功,則OnDisconnected事件將立即觸發。

看到此行爲是在用戶離開頁面並依賴於客戶端時運行的,因此可能不一致。

希望這會有所幫助!

相關問題