我有一个Node / express应用程序,使用Passport进行帐户创建和身份验证。我希望能够检查哪些会话处于活动状态,即哪些用户当前已登录。
我可以在每个用户的个人资料中添加一个标记,该标记在登录/注销时更改,但我不知道护照如何处理仅关闭浏览器并且没有专门访问的用户注销路线,所以我不知道在这种情况下这个标志是否会设置为false。
实现这一目标的最佳方法是什么?
我的最终游戏是能够告诉服务员是否在收到来自其他人的消息时向其他用户发送通知电子邮件 - 如果他们当前正在记录该消息,则他们赢了'收到一封电子邮件。
答案 0 :(得分:1)
好的,如果你设置了Passport,那么答案取决于你正在使用的会话存储。从本质上讲,您将查询会话存储以查看存在哪些活动用户,但实际操作的实际机制将根据您的实现而有所不同。一旦您知道会话存储区是否认为给定用户处于活动状态,您就可以决定是否发送该消息。
然而,会话商店并不是绝对可靠的。无论您如何设置会话过期,几乎不可能保证商店对所有用户都有完美的了解;从用户关闭浏览器窗口到会话认为他或她离线时,总会有一些非零的时间。
因此,即使在发送邮件之前确保用户在线的先发制人尝试,如果您想要真正可靠的投放,您也需要让您的客户端代码发回收据确认。如果确认失败,那么您可以放心地假设用户没有得到它并在事后发送电子邮件。