【问题标题】:continuously read json from childprocess stdout不断从子进程标准输出读取 json
【发布时间】:2016-03-14 17:37:43
【问题描述】:

我想在 nodejs 中从 java 子进程读取和发送 json 消息。 childprocess 将存在一段时间。通过stdio 发送和接收的消息代表两个进程之间的事件。因此,消息必须在完成后立即处理。

输出格式为

{"type":"eventType","data":...}
{"type":"anotherEventType","data":...}
...
{"type":"anotherEventType","data":...}

写消息没问题,但阅读是。特别是因为我不能依赖\n 上的消息拆分,也不能依赖一个块包含一条消息。

不幸的是,我能找到的每个示例都会缓冲stdout 的输出,直到进程终止,然后才解析它。我能找到的所有 IPC 节点模块都使用我想避免的套接字。

是否有提供此类功能的现有库或者我必须自己扮演角色?

【问题讨论】:

  • 两个进程都在 Node 中实现吗?如果是这样,通过 Node 的 IPC 通道发送 JSON 消息非常容易(如果确实是您的情况,我可以在答案中详细说明)。
  • 不,节点将生成一个 java vm。编辑问题

标签: json node.js stream ipc


【解决方案1】:

JSONStream 完全符合我的要求。

child.stdout
    .pipe(require('JSONStream').parse())
    .on('data', processMessage);

【讨论】: