1
我讀過OnDisconnect
(服務器端)有時可以繞過(應用程序回收等)。OnDisconnect和回收後登錄用戶?
的OnDisconnected方法不會被調用在某些情況下,當一臺服務器出現故障或應用程序域得到回收等 的。
於是我問:
當用戶連接,我產生他一個token
,保持它在用戶cookie
,當OnConnect
叫,我附上connectionId
與該令牌。
(其中onDiconnect
被稱爲以同樣的方式,我設置在dateDisconnected
的值)
這也將支持2名連接的用戶(相同瀏覽器)
例如:
示例:
id tokenId ConnectionID DateCreated dateDisconnected
----------------------------------------------------------------------------------------------
1 500 {1234-1234} 06-07-2013 null
2 500 {5432-5432} 06-07-2013 null
這裏的問題是:如果用戶已經登錄
會發生什麼(所以我寫這篇文章的用戶在我的數據庫爲登錄),做一些聊天,然後再次啓動服務器?
客戶端將嘗試重新連接,並在30秒後停止。
但隨後,當服務器是UP(一小時後) - 我STILL有一個登錄的用戶在我DB。他是不是。 (好吧,不是那個連接ID ......)
我該如何解決這類問題?
嗨:-)我想在雅布布問你關於這個問題。 (但是當你給我發送信息時,我會離線:-)但是,請你詳細說明你的解決方案嗎?我不認爲我得到它100%(有人還建議一個計時器「保持活着」數據庫記錄:例如 - 每分鐘更新一個日期在db。 –
您的問題的基礎是,當服務器重新啓動您的所有數據庫記錄aren所以我建議每當你的應用程序啓動時(Application_Start)你可以註銷你的數據庫中的每一個用戶 因此,當服務器重新啓動並碰巧發生6在您的數據庫中留下登錄的用戶。當您的應用程序啓動備份並且Application_Start被觸發時,您可以刪除每個登錄用戶,導致0登錄用戶,因此沒有殭屍項。 –
謝謝(一如既往) –