父节点进程和子节点进程之间默认设置使用此IPC:
const cp = require('child_process');
const k = cp.fork(childPath);
我可以向子进程发送消息:
k.send('foobar');
并收到回复消息:
k.on('message', m => console.log('received a message from child:',m));
但是,我的问题是 - 有没有办法使用 cp.spawn 而不是 cp.fork 来设置带有 node.js 子进程的 IPC?
当您使用
EventEmitter
时,没有内置方法可以使用 spawn
框架将消息传递给子进程。
请参阅以下官方文档中的片段:
child_process.fork() 方法是 child_process.spawn() 的一个特例,专门用于生成新的 Node.js 进程。与 child_process.spawn() 一样,返回一个 ChildProcess 对象。返回的 ChildProcess 将具有一个附加的内置通信通道,允许消息在父进程和子进程之间来回传递。有关详细信息,请参阅 subprocess.send() 。
这可能是一个选项,可以在
spawn
上进行自定义包装,以“增强”其使用 EventEmitter 的能力,但我不明白为什么人们不直接使用 fork
,因为它是预期用途-大小写代替。