2012-04-30 9 views
5

Tengo un servidor socket.io el que escucha a los sockets:¿Socket.IO tiene multiprocesamiento?

io.sockets.on('connection', function(socket){ 
    socket.on('myEvent', function(data){ 
     socket.emit('eventReceived', { status: 1 }); 
    }); 
}); 

Es este código de trabajo en múltiples hilos? si dos clientes emitirán el evento myEvent, ¿funcionará al mismo tiempo para ambos clientes? o será manejado uno después del otro?

¡Muchas gracias!

+1

No, no es multiproceso. Node.js usa un solo bucle de eventos con hilos. Ver [esta respuesta] (http://stackoverflow.com/questions/9362823/why-is-a-function-and-a-callback-non-blocking-in-node-js/9363071#9363071) mío para un explicación adicional. –

+0

Si el Node.js no tiene multiprocesamiento, ¿significa que el Socket.IO tampoco es multihilo? – udidu

+1

Exactamente. Puede escalar ejecutando un back-end distribuido para la mensajería, hay una [tienda redis] (https://github.com/LearnBoost/socket.io/blob/master/lib/stores/redis.js) integrada. –

Respuesta

1

Nada en Node.js es multiproceso, incluidos los paquetes disponibles a través de npm. Hay un módulo de agrupación experimental disponible en el núcleo

http://nodejs.org/docs/v0.10.2/api/cluster.html

+0

El hecho de que Node.js tenga un solo bucle de eventos no significa que los procesos asincrónicos bajo el capó, detrás de las escenas, no sean de subprocesos múltiples. Porque muchos lo son Aquí hay un artículo que aborda un problema en ese sentido: https://www.future-processing.pl/blog/on-problems-with-threads-in-node-js/ – user1588877