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:
-
process.nextTick :在当前事件队列结束后执行callback,即在下一个事件循环的开始。 它不允许I / O执行,直到执行
maxTickDepth
nextTick
调用。 如果使用太多,可以防止发生I / O。 -
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慢得多。
有大量的客户端框架可以为你做些宽松的事情,而不是服务器的问题。
(当然,所有这些对你的使用案例都是无意义的!)