使用 ExpressJS 和 Socket.IO 我有一个 HTML 场景,多个用户可以在其中连接到 NodeJS。我即将制作一些必须同步到所有客户端的动画。
在客户端,我知道动画可以通过 setInterval() (不是时间理想的)然后 socket.emit() 到 NodeJS 来实现。但是在 NodeJS 中是否有一个空闲循环可以用于主控动画和 io.sockets.emit() 来更新每个人的每个人?
编辑:我想在 node.js 中对值做一般的“动画”,例如伪代码:
process.idle(function() {
// ...
itempos.x += (itempos.dest - itempos.x) / 20; // easing
itempos.y += (itempos.dest - itempos.y) / 20; // easing
io.sockets.broadcast('update', itempos);
// ...
});
最佳答案
作为服务器端框架,它很少空闲(CPU 或 I/O)。此外 idleloop 更适合 DOM 要求。但是在 node.js 中你有以下功能:
process.nextTick :在当前事件队列完成后执行回调,即在下一个事件循环开始时执行。在
maxTickDepth
之前,它不允许执行 I/OnextTick
调用被执行。如果使用过多,它会阻止 I/O 发生。setImmediate :在当前事件循环中的 I/O 回调完成后执行回调。允许 I/O 在多个
setImmediate
调用之间发生。
鉴于您的需求,setImmediate
更适合您的需求。
关于node.js - NodeJS 空闲循环在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20945349/