您可以使用来自另一个进程的 NodeJS 读取流吗?

Can you consume a NodeJS read stream from another process?

如果我在 nodejs 中打开一个读取流,我可以通过文件系统提供它而不实际将文件写入磁盘吗?那么,另一个应用程序可以指定“somefile.json”然后像读取普通文件一样读取文件吗?

是的。数据可以通过网络套接字反弹。但是,如果两个进程 运行 在同一个 Unix 主机上,数据可能会从节点写入命名管道,然后从另一个进程读取。

命名管道(也称为 fifos)是一种通过 OS 默认文件系统 API.

提供跨进程通信服务的便捷方法

可以使用第三方库在 NodeJS 中实例化 命名管道源,并将其视为可写流接收器

import fifo from "mkfifo";
import util from "util";
import crypto from "crypto";
import stream from "stream";
import fs from "fs";

(async ()=>{
  await new Promise(resolve => fifo.mkfifo("fifo-file", 0o600, resolve));
  
  await util.promisify(stream.pipeline)(
    function*(){
      for(let i=0;i<100;i++){
        yield JSON.stringify({ id: crypto.randomBytes(6).toString("hex") }) + "\n";
      }
    },
    fs.createWriteStream("fifo-file")
  );
})()
  .catch(console.error);

脚本将暂停执行(由于背压),直到其他进程从命名管道读取。