NodeJS空闲循环在哪里?

使用ExpressJS和Socket.IO我有一个HTML场景,多个用户可以连接到NodeJS。 我即将做一些animation,必须同步到所有的客户端。

在客户端,我知道animation可以通过setInterval()(不是时间理想)然后socket.emit()到NodeJS来实现。 但在NodeJS中是否有一个空闲循环,可用于主控animation和io.sockets.emit()更新每个人的每个人?

编辑:我想做node.js中的值的一般“animation”,例如伪代码:

process.idle(function() { // ... itempos.x += (itempos.dest - itempos.x) / 20; // easing itempos.y += (itempos.dest - itempos.y) / 20; // easing io.sockets.broadcast('update', itempos); // ... }); 

作为一个服务器端的框架,它将很less闲置(CPU或I / O)。 除了idleloop更适合DOM要求。 但在node.js中,您有以下function:

  1. process.nextTick :在当前事件队列结束后执行callback,即在下一个事件循环的开始。 它不允许I / O执行,直到执行maxTickDepth nextTick调用。 如果使用太多,可以防止发生I / O。

  2. setImmediate :当前事件循环中的I / Ocallback完成后执行callback。 允许在多个setImmediate调用之间发生I / O。

给你想要什么setImmediate更适合您的需求。

查看定时器文档: http : //nodejs.org/api/timers.html

所有的定时器function都是全局的。

setInterval(callback, delay, [arg], [...])

要安排每延迟毫秒重复执行callback。 返回可能用于clearInterval()的intervalId。 您也可以将parameter passing给callback。

对于同步的客户端animation来说,以块的forms进行序列的速度比将animation持续时间内的多个websocket排放压缩的速度要慢一些。 根据我的经验,人眼比websocket慢得多。

有大量的客户端框架可以为你做些宽松的事情,而不是服务器的问题。

(当然,所有这些对你的使用案例都是无意义的!)