每当一个新的套接字连接,我的process.nextTick()被打乱
出于某种原因,每当一个新的套接字连接到服务器时,我的emitDraw函数在绘制中途停顿(process.nextTick()调用周期意外中断)。 无论如何保持我的emitDraw函数运行,同时也接受新的连接?
io.sockets.on('connection', function(socket) { socket.on('drawing', function() { //some code emitDraw(socket); }); }); function emitDraw(socket) { //some code process.nextTick(function(){emitDraw(socket)}); };
谢谢
process.nextTick()只是帮助将代码从当前正在执行的堆栈推到下一个堆栈的顶部。 这两个堆栈执行之间触发的事件的callback因此允许在下一个堆栈中执行。
在目前的情况下,正常的执行堆栈只有emitDraw()执行,而对process.nextTick()的调用允许事件(特别是套接字连接)在下一个堆栈中触发和执行。 一旦套接字连接被触发,堆栈就有两组要执行的代码,与socket.on(连接)和emitDraw()相关联的callback。
如果emitDraw()变为无响应,则意味着它不能在当前堆栈上共同执行而不会降低性能。
由于Node.js主进程在一个线程上运行,因此除了增加处理能力之外,不能期望通过将其保留在同一个线程中获得更好的性能。 或者,您可以将emitDraw()分支到subprocess,以便它可以独立于主进程执行。
- 如何解决:Nodejs passport.header问题,req.session.passport未定义
- 在Sails js中调用REST API
- 如何在节点源代码中findprocess.binding('..')中使用的源文件?
- 我们如何区分deflateRawstream的deflatestream?
- 如何在Heroku上运行`grunt connect`进程
- 从upsert获取插入行的id(insertOrUpdate)Sequelize Node.js
- 使用node.js加载更多button分页
- 在渲染页面之后,Mongojs查询完成
- Node.js – 对promise.all()后的每个结果继续承诺链