gpt4 book ai didi

javascript - 如果服务器崩溃,如何跟踪用户的 "online"状态?

转载 作者:行者123 更新时间:2023-11-30 17:06:42 25 4
gpt4 key购买 nike

我有多个 heroku dynos 和一个聊天应用程序。当用户登录时,他们的状态在 MongoDB 中设置为“在线”。但是,如果服务器崩溃,它们的状态仍将设置为在线。服务器崩溃时如何将用户状态更新为“离线”?

如果我只有一个测功机,这会很容易。当服务器启动时,我只是将每个用户更新为“离线”。不幸的是,这对于多个服务器是不可能的。

最佳答案

根据我们的聊天和评论。

最好的选择是检查上次事件。因此,查看最后一条消息的发送时间以及它是否发生在最后一条消息中(假设 5 分钟内他们在线),如果没有事件,则将他们标记为离线。

就像我在评论中提到的那样,如果您没有在消息文档中存储 date_created,则无需更改任何内容,因为 _id 存储了时间戳

ObjectId("507f191e810c19729de860ea").getTimestamp()

返回这个 Date 对象

ISODate("2012-10-17T20:46:22Z")

answer是另一种选择(如果您想让他们保持在线状态,即使他们没有发送消息):

If you would like to know they are still active even when they're not jumping from page to page, include a bit of javascript to ping your server every 60 seconds or so to let you know they are still alive. It'll work the same way as my original suggestion, but it will update your records without requiring them to be frantically browsing your site at least once every five minutes.

var stillAlive = setInterval(function () {
/* XHR back to server
Example uses jQuery */
$.get("stillAlive.php");
}, 60000);

关于javascript - 如果服务器崩溃,如何跟踪用户的 "online"状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com