【发布时间】:2021-08-01 23:34:28
【问题描述】:
我有一个从 mongo db 获取用户数的函数:
let totalOnlinePlayers = 0;
async function GetTotalOnlinePlayers() {
totalOnlinePlayers = await db.GetTotalOnlinePlayers();
setTimeout(GetTotalOnlinePlayers, constants.timeToUpdateOnlineCount);
}
let x = GetTotalOnlinePlayers();
在db中,函数如下:
let GetTotalOnlinePlayers = async function () {
return User.collection.estimatedDocumentCount();
};
它按预期工作。
但我使用的是在另一个 vps 上运行的 mongo 服务器,当我通过停止 15-20 秒以上来重新启动 mongo 服务器时,超时不再执行。
当我重新启动节点服务器时,它又可以正常工作了 但问题又是,我在我的节点服务器中使用套接字并重新启动它会断开我游戏中的玩家并且有时会弄乱我的游戏逻辑。
我可以避免重新启动 mongoserver,但我很好奇是什么导致了这个问题。
【问题讨论】:
标签: node.js mongodb socket.io settimeout