2013-04-30 60 views
0

我想在我的網站上有單一用戶登錄,即用戶無法同時使用一個用戶名和密碼從不同地方登錄。單個用戶在網絡/系統崩潰的情況下登錄

它可以通過保持在數據庫中的標誌或改變,對用戶註銷和登錄,但什麼簡單地完成樣,如果用戶不按註銷按鈕和:

  1. 關閉瀏覽器(在這裏我可通過window.unload事件更改數據庫標誌)
  2. 網絡崩潰(真正的問題在這裏)。

任何人都可以建議如何處理系統/網絡相關的問題?我不想使用session.end(),因爲它有時會在默認超時(〜20分鐘)後觸發。

我可以使用signalR創建一個服務器計時器來監視用戶是否還活着嗎?

+0

任何人都可以說是否可以處理? – 2013-04-30 11:56:55

回答

1

SignalR將遭受服務器崩潰。 SignalR盡最大努力確保在關閉之前觸發事件,但有些情況下服務器會死機,導致您的數據庫中出現無效條目。

https://jabbr.net/使用的方法是在服務器啓動時記錄每個用戶。因此,無論何時您的SignalR服務器啓動:運行數據庫清理。在所有其他情況下,您可以依靠SignalR來適當地跟蹤用戶。

爲了解決您的#1問題:SignalR實際上會在卸載時向服務器發送abort命令,但是如果該命令因任何原因未被髮送,服務器仍會超時連接並最終觸發集線器上的OnDisconnected 。