Javascript无限循环更新实体

Javascript infinite loop to update entities

本文关键字:实体 更新 无限循环 Javascript      更新时间:2023-09-26

我正在用javascript编写一个游戏,在服务器上做世界/地图服务,我还需要添加一个命令来更新所有实体。

假设一个实体/怪物正在移动,这意味着一个持续的更新被发送到所有连接的客户端。

如果我输入

while(true)
  sendToAllConnectedClientsNearToThisMonster(data)
  items.forEach
     checkIfItemHasNotExpiredYet(item)
     deleteItemFromWorldIfExpired()

但与此同时,同样的服务也在做其他事情,比如处理进出的数据包。encryption对报文进行解密。路由数据包,将聊天数据包转发到聊天服务器等

这不会阻塞我的node.js服务器吗?处理这些任务的正确方法是什么?

使用setInterval,它每X毫秒(在本例中为250毫秒)执行您的函数。这样您就不会阻塞您的服务器。由于node.js是单线程的,你应该始终遵循回合法则:永远不要等待。永远不会阻塞。快点结束!

下面是用setInterval包装的伪代码:

setInterval( function() {
  sendToAllConnectedClientsNearToThisMonster(data)
  items.forEach
     checkIfItemHasNotExpiredYet(item)
     deleteItemFromWorldIfExpired()
}, 250);

http://nodejs.org/api/timers.html timers_setinterval_callback_delay_arg