首页 > 解决方案 > 将 Javascript 对象从子进程流式传输到父进程

问题描述

有没有一种简单的方法可以将 nodejs 对象从子进程流式传输到父进程?我试图打破通过各种处理组件流式传输对象的长管道。我现在想打破链条并将其中的一部分放在子进程中。我没有问题将标准输出从孩子传送到父母,但那是字符串和缓冲区。我知道我可以在发送端使用 JSON.stringify,在接收端使用 JSON.parse,但还有其他方法吗?

标签: javascriptnode.jsstream

解决方案


您不能直接在进程之间移动 Javascript 对象(因为它们是在不同进程内存中运行的完全不同的 V8 实例),因此必须对它们进行序列化,然后以某种方式反序列化(JSON 通常用于此序列化)。

有没有一种简单的方法可以将 nodejs 对象从子进程流式传输到父进程?

您可以使用process.send(someObj)将对象从子级发送到父级,nodejs 将为您执行序列化和反序列化(将对象克隆到父进程中)。该对象需要是纯 Javascript(因此没有对本机代码的引用)并且没有循环引用,但可以是任何纯 Javascript 对象。

这是通过 IPC 通道发送的,nodejs 在创建子进程时自动在父子进程之间设置。根据文档,“消息将作为父母的 ChildProcess 对象上的'消息'事件接收。”


推荐阅读