如果服务器崩溃,如何跟踪用户的“在线”状态
How can I track "online" statuses of users if a server crashes?
我有多个heroku dynos和一个聊天应用程序。当用户登录时,他们的状态在MongoDB中设置为"在线"。但是,如果服务器崩溃,其状态仍将设置为联机。如何在服务器崩溃时将用户状态更新为"脱机"?
如果我只有一个测功机,这很容易。我只是在服务器启动时将每个用户更新为"离线"。不幸的是,这在多台服务器上是不可能的。
根据我们的聊天和评论。
最好的选择是检查最后一个活动。因此,查看最后一条消息的发送时间以及是否发生在最后一条消息中,假设它们在线,如果没有活动,请将它们标记为离线。
就像我在评论中提到的,如果您没有在消息文档中存储date_created
,则无需更改任何内容,因为_id
存储时间戳
ObjectId("507f191e810c19729de860ea").getTimestamp()
返回此日期对象
ISODate("2012-10-17T20:46:22Z")
这个答案是另一种选择(如果你想让他们保持在线,即使他们不发送消息):
如果你想知道它们仍然处于活动状态,即使它们没有从一个页面跳到另一个页面,包括一些javascript,每60秒左右ping一次你的服务器,让你知道它们还活着。它的工作方式与我最初的建议相同,但它会更新您的记录,而无需他们至少每五分钟疯狂浏览一次您的网站。
var stillAlive = setInterval(function () {
/* XHR back to server
Example uses jQuery */
$.get("stillAlive.php");
}, 60000);
相关文章:
- 如果在线检查期间发生电源故障,我们如何更新用户再次登录门户时的剩余时间
- 从Javascript运行PHP文件来检查在线用户:表示未登录的用户是
- 如何在我的网站上获得用户在线状态(实时)
- 在xmpp多聊天中,管理员角色只授予创建房间的在线用户成员资格
- 检查用户是否在线
- 如果服务器崩溃,如何跟踪用户的“在线”状态
- 在线投票应用程序.如何避免同一用户的重复投票
- 在MeteorJS中直接向在线用户发送消息
- SignalR用于跟踪在线用户和聊天
- 高级用户/员工在线活动跟踪
- 无法使用本地主机上的node.js向不在线的用户发送消息
- XEP-0133:管理员请求获取所有在线用户列表
- node . js,套接字.Io:检查用户是否在线或离线
- 套接字.IO是跟踪用户是否在线的最好方法
- Twitch流状态显示在线.当用户离线时
- Html5缓存,每次用户在线时更新
- Firebase -统计在线用户
- 关于制作'如果用户在线'系统
- 使用QuickBlox JS SDK列出房间在线用户的数量
- 如何使用Chatter应用程序MVC显示用户在线