【发布时间】:2015-03-07 07:41:31
【问题描述】:
我有多个 heroku dynos 和一个聊天应用程序。当用户登录时,他们的状态在 MongoDB 中设置为“在线”。但是,如果服务器崩溃,其状态仍将设置为在线。服务器崩溃时如何将用户状态更新为“离线”?
如果我只有一个测功机,这将很容易。我只是在服务器启动时将每个用户更新为“离线”。不幸的是,这对于多台服务器是不可能的。
【问题讨论】:
-
您是否在跟踪他们在您网站上的活动?
-
@gmaniac 你是什么意思?当他们登录时,我将状态设置为“在线”,当调用套接字“断开连接”事件时,我将他们的状态设置为“离线”
-
因此,例如,如果您正在存储他们的消息,那么您可以运行 cron 或在后台运行某些东西来检查最后一个活动,如果它不在
x时间,他们的状态将更改为不活动或离线。 -
如果您要存储消息,则无需向 mongo 文档添加任何额外参数,
_id具有时间戳 -
@gmaniac 我想这会起作用。虽然不幸的副作用是状态永远不会 100% 准确,但会有延迟。
标签: javascript node.js mongodb heroku socket.io