Jak přesně to funguje pod kapotou / na úrovni OS (především v implementacích Unix / z pohledu API pro sockety)?
Dokumentace modulu clusteru říká:
„hlavní proces naslouchá na portu, přijímá nová připojení a rozděluje je mezi pracovníky způsobem „round-robin“
Znamená to, že hlavní proces sám zpracovává / volá accept() u příchozích připojení a poté předá vrácený deskriptor soketu předem rozvětvenému podřízenému procesu prostřednictvím nějakého mechanismu IPC (sockety unixové domény?), kde je pravděpodobně registrován u místního ( k tomuto procesu) mechanismus multiplexování (např. instance epoll)?
Snažím se lépe porozumět vnitřnímu fungování Node.js, ale na této úrovni nemohu najít spoustu definitivních informací. Jakákoli pomoc je velmi oceňována.
Díky
Přijatá odpověď:
Viz child.send()
v modulu nodejs child_process. Stručně řečeno:
child.send('socket', socket);
Kde 'socket'
je speciální název zprávy a odešlete odkaz na objekt soketu nodejs. Nodejs pak zpracovává věci pod kryty v modulu child_process pro odeslání skutečného ovladače soketu OS do podřízeného procesu a poté k němu na druhém konci věcí připojí nový objekt soketu nodejs.
A zde je odkaz na článek na téma:Odeslání soketu do rozvětveného procesu v Node.JS.