2016-11-11 97 views
0

我有一個Node/express應用程序,使用Passport進行帳戶創建和身份驗證。我希望能夠檢查哪些會話處於活動狀態,即哪些用戶當前已登錄。Node.js檢查是否有其他用戶登錄

我可以在每個用戶的個人資料上有一個標誌,在登錄/註銷時會更改,但我不知道護照如何處理關閉瀏覽器的用戶,而不是專門去註銷路由,所以我不知道在這種情況下該標誌是否會被設置爲false。

實現此目的的最佳方式是什麼?

我的最後一步就是能夠告訴發球是否要發送通知郵件給其他用戶,當他們收到一條消息,從別人 - 如果他們當前登錄的話,他們不會得到一個電子郵件。

+0

你有沒有嘗試過任何東西呢?從你的問題來看,這聽起來像你甚至還沒有嘗試過設置Passport,因爲當你這樣做的時候你的一些問題會得到解答。 – Paul

+0

是的,我的護照正在運行。我還沒有嘗試過任何東西,因爲我不知道處理這種情況的最佳方式。我所做的所有搜索都會顯示如何檢查當前用戶是否已登錄的結果,但這對此沒有幫助。會話在一定時間後過期,但我不知道如何獲得該過期以觸發更改'isLoggedOn'標誌。 –

回答

1

好了,所以如果你有護照成立,那麼答案取決於你所使用的會話存儲。實質上,您將查詢會話存儲以查看哪些活動用戶在那裏,但實際操作的實際機制取決於您的實施。一旦知道某個給定用戶是否被會話存儲視爲活動的,您可以決定是否發送該消息。

然而,會話存儲是不可能不犯錯。無論您的會話過期設置如何,幾乎不可能保證商店對所有用戶都有完美的知識;從用戶關閉瀏覽器窗口到會話認爲他或她離線時,總是有一些非零的時間量。

所以,即使與先發制人的嘗試,以確保用戶是發送消息,如果你想真正可靠的傳送,你會希望有你的客戶端代碼之前在網上發回確認收訖。如果確認失敗,那麼你可以安全地假設用戶沒有得到它,並在事後發送電子郵件。