这在底层/操作系统级别到底是如何工作的(主要是在 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 中的分叉进程。