每当一个新的套接字连接,我的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,以便它可以独立于主进程执行。