情況之一:第一個用戶等陸了,不允許第二個用戶登錄。
情況之二:第一個用戶登錄了,第二個用戶登錄擠掉第一個。
針對於第一種情況,可以在數據庫設置用戶狀態,也可以在緩存,這個很容易實現,現在討論瀏覽器異常關閉
的情況如何處理
可以考慮以下3個方法:
1。session失效,實現比較簡單,也很保險,但缺點是實時性太差。
2。ajax輪詢,也就是在客戶端寫個定時器,定時通過ajax方式發送一個信號到服務端,當服務端過了最大時間都沒有接收到信號說明客戶端已經關閉。
3。客戶端用一個腳本監測是否關閉
window.onbeforeunload = function onunload_handler(){
//瀏覽器關閉的時候會執行到此處
//處理用戶信息,使之變成離線狀態
}
IE fireFox支持
關於第二種情況:可以通過管理session來實現,後一次登錄的獲得前一次登錄的session,並主動讓其失效,因爲這個失效是瞬間的,所以前面登錄的用戶被擠掉了。
這個主要是做一個session監聽,對所有有效的session進行管理,就是把他們保存在全局變量中,並讓它跟當前的用戶綁定在一起,下一次這個用戶可以根據userId之類的信息找到上次登錄但還沒失效的session,並讓其失效