我正在使用 NodeJS 创建一个 HTML5 游戏(使用 websockets)。为了更新我的游戏并将数据发送给每个玩家,我使用 setInterval() ,间隔为 33 毫秒(每秒更新 30 次)。
当超过 10 个玩家连接到游戏时,websockets 库开始消耗大量 CPU,并且 setInterval 开始出现一些延迟(达到每秒 27-28 帧)。
对我的代码进行分析后,我发现我的 CPU 大部分时间都是空闲的。于是我就这么想。我的整个程序在每个循环之间的 33 毫秒间隔内是否空闲? 如果我设置动态间隔会起作用吗?例如,当很多玩家连接并且每秒帧数开始下降时,我将间隔从 33 毫秒重置为 28 毫秒?这可以工作/有人可以使用这样的系统吗?
最诚挚的问候, 丹尼尔
最佳答案
我现在更清楚地了解您的问题了。我不确定我会如何解决这个问题。我发现了一个类似的问题,解决方案不是使用 setInterval
而是使用 setTimeout
。我认为一旦计算了循环执行所需的时间,就可以应用相同的逻辑。
javascript while loop or set interval with dynamic delay
编辑
还想将其包括在内,感谢@Bergi How to create an accurate timer in javascript?
关于javascript - Nodejs/Javascript动态间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239306/