我正在使用Node.js实现基于多人游戏的游戏,用于服务器端脚本。 游戏就像垄断,其中多个房间和单个房间有多个玩家。 我想为所有房间实现计时器,我已经阅读了很多文章,我有两个选项如下:
1} 我会立即向每个玩家发出当前时间,然后他们会处理计时器并在转弯或时间上发送到服务器。
2} 我可以管理服务器上的计时器并且每秒发出一次,但它会给服务器带来负载,也会因为Node.js是单线程而混淆了我为多个房间管理多个 setInterval()。它会加入队列并产生延迟。
所以请帮助我最好的选择。
答案 0 :(得分:1)
混合方法可能最适合此问题。最初,您可以通过从服务器接收计时器的当前值来启动。随后,客户端可以独立运行定时器,而无需在当前时间请求服务器。如果准确性对此项目很重要,那么您可以每15秒左右请求服务器调整一次可能导致服务器与其客户端之间出现差异的时间偏差。
另外,请注意,尽管Node.js是单线程的,但它本身就是异步的。