¿Cómo funciona exactamente bajo el capó/a nivel del sistema operativo (principalmente en implementaciones de Unix/desde la perspectiva de la API de sockets)?
La documentación del módulo de clúster dice:
"el proceso maestro escucha en un puerto, acepta nuevas conexiones y las distribuye entre los trabajadores de forma rotatoria"
¿Significa esto que el proceso maestro solo maneja / llama a accept() en las conexiones entrantes, y luego pasa el descriptor de socket devuelto a un proceso secundario previamente bifurcado a través de algún mecanismo IPC (¿sockets de dominio Unix?), donde presumiblemente está registrado con un local ( a ese proceso) mecanismo de multiplexación (por ejemplo, una instancia de epoll)?
Estoy tratando de comprender mejor el funcionamiento interno de Node.js, pero no puedo encontrar mucha información definitiva en este nivel. Cualquier ayuda es muy apreciada.
Gracias
Respuesta aceptada:
Ver child.send()
en el módulo child_process de nodejs. En pocas palabras, usted hace:
child.send('socket', socket);
Donde 'socket'
es un nombre de mensaje especial y envía una referencia al objeto de socket nodejs. Luego, Nodejs maneja las cosas debajo de las cubiertas en el módulo child_process para enviar el identificador de socket del sistema operativo real al proceso secundario y luego conectar un nuevo objeto de socket de nodejs en el otro extremo de las cosas.
Y aquí hay una referencia a un artículo sobre el tema:Envío de un socket a un proceso bifurcado en Node.JS.