Javascript无限循环更新实体

时间:2014-06-30 08:27:23

标签: javascript node.js

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

让我们说实体/怪物正在移动这意味着不断更新会发送到所有连接的客户端。

如果我做的话

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

但与此同时,同样的服务正在处理其他内容,例如处理进出的数据包。加密解密数据包。路由数据包,将聊天数据包转发到聊天服务器......等等。

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

1 个答案:

答案 0 :(得分:1)

使用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