Node.js/集群模块如何将新连接从主进程/父进程传递到子进程?

Node.js/集群模块如何将新连接从主进程/父进程传递到子进程?

这在底层/操作系统级别到底是如何工作的(主要是在 Unix 实现中/从套接字 API 的角度来看)?

集群模块文档说:

“主进程监听端口,接受新连接并以循环方式将它们分发给工作人员”

这是否意味着主进程单独处理/调用传入连接上的accept(),然后通过某种IPC机制(Unix域套接字?)将返回的套接字描述符传递给预先分叉的子进程,它可能在本地(到该进程)多路复用机制(例如epoll实例)?

我试图更好地了解 Node.js 的内部工作原理,但在这个级别找不到大量明确的信息。任何帮助深表感谢。

谢谢

答案1

child.send()在nodejs child_process 模块中。简而言之,你这样做:

child.send('socket', socket);

其中'socket'是一个特殊的消息名称,并且您发送对 nodejs 套接字对象的引用。然后 Nodejs 在 child_process 模块中处理底层的事情,将实际的操作系统套接字句柄发送到子进程,然后在事物的另一端将一个新的 Nodejs 套接字对象连接到它。

并且,这里是对有关该主题的文章的引用:将套接字发送到 Node.JS 中的分叉进程

相关内容