javascript - 服务器上的nodejs计时器

标签 javascript node.js

我是 nodejs 的新手。我要开发一个服务器端的游戏,每个玩家都有固定的时间,当轮到他/她时,剩余时间应该开始倒计时,直到他/她提交他/她的选择。

我们无法在客户端处理此问题,因为用户可能会在一段时间后关闭应用程序(或断开与互联网的连接或关闭设备)并且我们没有他/她过去的时间以及他/她返回的时间, 他/她会看到他/她在服务器中最后保存的时间是不正确的。

另一种选择是每隔 15 秒将客户端与服务器同步一次,这可以以某种方式解决问题,但在某些情况下时间不会准确。我们的游戏高度依赖于时间。此外,我猜它会在服务器上产生大量过载,并且来自客户端的许多请求。

第三个选项是为服务器中的每个玩家设置计时器,这对服务器有额外且沉重的负载,而且 Node 是单线程,因此无法实现此选项。

什么是最好的解决方案?发送


更新

  1. 忘记说了,用户匹配,我用的是socket。

  2. 另一点是我们知道用户什么时候开始玩(我们确定时间)甚至玩家人数。我的意思是我们不可能面对很多用户一起上网玩。我们知道在晚上 8 点到 8:30 之间,最多有 60 名玩家在线。

  3. 这个问题很重要,因为每个用户断开连接的时间都是有限的。我的意思是不管你有多少剩余时间,你都必须在 1 分钟后重新连接。如果你不回来,你就迷路了。此外,断开连接的整个时间是对您剩余时间的惩罚。我的意思是,如果您有 80 秒并断开连接 50 秒,那么您的剩余时间现在是 30 秒。

最佳答案

为什么不只存储用户开始测验/游戏的时间,然后当用户完成测验时,获取当前时间并计算它花费的时间作为end - start。现在在客户端,您可以只请求一次开始时间,然后根据该时间显示倒计时。

关于javascript - 服务器上的nodejs计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51786193/

相关文章:

node.js - Webpack 不包括 ProvidePlugins

javascript - Node.js 集群模块不会在 http.Server.close() 上释放套接字/端口

javascript - 如何在nodejs上的.env中设置变量

javascript - 未捕获的 TypeError : $(. ..).tooltip 不是函数

javascript - 为什么从区 block 链获取区 block 时没有得到任何输出?

javascript - 如何在 react 中运行脚本

javascript - 如何将输入字段转换为选择选项?

python - Nodejs 加密与 python hashlib

javascript - 测试框架意外退出 - Karate 测试

node.js - 如何使用socket.connect()打开多个连接