📜  Node.js process.send() 方法(1)

📅  最后修改于: 2023-12-03 15:17:55.276000             🧑  作者: Mango

Node.js process.send() 方法

在 Node.js 中,process.send() 方法是用于向父进程发送消息的 API。这是 node.js 提供的一种 IPC(进程间通信)方式,可以用于进程之间的通信。

语法
process.send(message[, sendHandle][, options][, callback])
参数
  • message:要发送的消息。可以是任何 JSON 对象。
  • sendHandle(可选):一个 TCP 或 UNIX 套接字句柄,或者一个 net.Server 或 net.Socket 对象。
  • options(可选):指定发送选项的对象。例如,可以使用 options.pingTimeout 指定超时。
  • callback(可选):回调函数,在消息成功发送时调用。
返回值

boolean

  • 如果成功发送消息,则返回 true
  • 如果不能发送消息,则返回 false
使用例子

在子进程中发送消息给父进程:

// 子进程
process.send({ hello: 'world' });

在父进程中监听消息:

// 父进程
const { fork } = require('child_process');

const child = fork('./child.js');

child.on('message', message => {
  console.log(`Received message from child process: ${message}`);
});

在上述代码示例中,子进程通过 process.send() 方法向父进程发送了一个 hello: 'world' 消息。父进程通过监听 child.on('message', ...) 事件,接收到了来自子进程的消息。

注意事项
  • process.send() 只能用于父子进程之间的通讯。
  • 如果发送消息后没有简单地调用 process.exit() 让子进程终止,则可能会出现内存泄漏的情况。
  • 父进程可以通过 child.disconnect() 方法手动断开与子进程的连接。
  • 子进程可以通过在 exit 事件处理程序执行之前调用 process.disconnect() 方法把自己与父进程的连接断开。
结论

在 Node.js 中,process.send() 方法是一种在父子进程之间交换消息的机制。它简单易用,可以用于在不同的进程之间传递数据或者执行一些特定的操作。同时,我们在使用 process.send() 时也需要注意一些细节问题,避免出现内存泄漏等情况。