Wie genau funktioniert das unter der Haube / auf Betriebssystemebene (hauptsächlich in Unix-Implementierungen / aus der Perspektive der Sockets-API)?
Die Clustermodul-Dokumentation sagt:
„Der Master-Prozess lauscht an einem Port, akzeptiert neue Verbindungen und verteilt sie im Round-Robin-Verfahren an die Worker“
Bedeutet dies, dass der Master-Prozess allein Accept() bei eingehenden Verbindungen verarbeitet / aufruft und dann den zurückgegebenen Socket-Deskriptor über einen IPC-Mechanismus (Unix-Domain-Sockets?) An einen vorverzweigten untergeordneten Prozess übergibt, wo er vermutlich bei einem lokalen ( zu diesem Prozess) Multiplexing-Mechanismus (z. B. eine epoll-Instanz)?
Ich versuche, das Innenleben von Node.js besser zu verstehen, kann aber auf dieser Ebene nicht viele definitive Informationen finden. Jede Hilfe wird sehr geschätzt.
Danke
Akzeptierte Antwort:
Siehe child.send()
im Modul nodejs child_process. Kurz gesagt, Sie tun:
child.send('socket', socket);
Wo 'socket'
ist ein spezieller Nachrichtenname und Sie senden eine Referenz auf das nodejs-Socket-Objekt. Nodejs behandelt dann die Dinge unter der Decke im child_process-Modul, um das eigentliche OS-Socket-Handle an den untergeordneten Prozess zu senden und dann am anderen Ende ein neues nodejs-Socket-Objekt damit zu verbinden.
Und hier ist ein Verweis auf einen Artikel zum Thema:Sending a socket to a forked process in Node.JS.