每次新的套接字连接时,我的process.nextTick()都会中断

时间:2012-05-27 05:47:00

标签: node.js socket.io

由于某种原因,每次新的套接字连接到服务器时,我的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)});
};

由于

1 个答案:

答案 0 :(得分:0)

process.nextTick()仅帮助将当前执行堆栈的代码推送到下一个堆栈的顶部。因此,允许在下一个堆栈中执行在这两个堆栈执行之间触发的事件的回调。

在当前情况下,正常执行堆栈只执行emitDraw(),并且对process.nextTick()的调用允许在下一个堆栈中触发和执行事件(特别是套接字连接)。一旦套接字连接被触发,栈就有两组代码要执行,回调与socket.on(连接)和emitDraw()相关联。

如果emitDraw()没有响应,则只表示它无法在当前堆栈上共同执行而不会降低性能。

由于主Node.js进程在单个线程上运行,因此除了通过提高处理能力之外,通过将它保持在同一个线程中,您不能指望任何更好的性能。或者,您可以将emitDraw()分叉到子进程,以便它可以独立于主进程执行。