node.js - NodeJS 空闲循环在哪里?

标签 node.js socket.io

使用 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 中你有以下功能:

  1. process.nextTick :在当前事件队列完成后执行回调,即在下一个事件循环开始时执行。在 maxTickDepth 之前,它不允许执行 I/O nextTick 调用被执行。如果使用过多,它会阻止 I/O 发生。

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

鉴于您的需求,setImmediate 更适合您的需求。

关于node.js - NodeJS 空闲循环在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20945349/

相关文章:

javascript - 删除两个重复的项目 javascript 数组

node.js - Nodejs错误: spawn ENOENT

node.js - 如何在 JOI 验证中添加自定义消息

node.js - 仅使用 socket-io 和 web 客户端 (socket io js) 进行安全交换

javascript - Ionic 2 列表未更新数据

javascript - Sequelize Eeager 加载错误 - 无法弄清楚包括

javascript - Sails.js,获取请求参数 json 对象

javascript - Socket.on() 不执行

backbone.js - 如何从我的主干 View 中取消绑定(bind)所有 socket.io 事件?

javascript - AngularJS + Socket.io : Socket events triggering modal—inside a directive or controller?