@achrinza/node-ipc

中文文档
9.2.10发布于 2025/12/21MITCommonJS近 30 天下载 164.8万

本地和远程进程间通信(IPC)的节点模块,神经网络,能为机器学习提供方便.

中文使用文档
文档目录5 节
  1. IPC 存储和默认变量
  2. IPC 服务器方法
  3. IPC 活动
  4. 多个IPC实例
  5. 基本实例

@achrinza/node-ipc 页面存档备份,存于互联网档案馆

注: 这是一个维护叉 node-ipc 这是用来 直接或间接依赖的软件包 node-ipc 维护者 需要换人.

见 https://github.com/achrinza/node-ipc/issues/1 (中文(简体) ) 更多细节.

Contributor Covenant Coverage Status

用于本地和远程进程间通信的节点js模块 并全力支持Linux,Mac和Windows. 它还支持从低等unix和窗口套接字到UDP以及安全TLS和TCP套接字的一切形式的套接字通信.

复杂多进程的巨大解决方案 神经网络建设 在节点JS

npm 安装 @achrinza/ node- ipc

旧节点版本

最新版本 @achrinza/node-ipc 可能与和谐旗合作。 官方支持节点v4 以及更新的es5和es6

测试

npm test 将用 istanbul 为@achrinza/node-ipc 进行茉莉花测试,并在光谱文件夹中生成覆盖报告.

您可能想要在全球安装 Jasmine 和 Istanbul sudo npm install -g jasmine istanbul


目录

  1. IPC 袜子和辅助OS的类型
  2. IPC 配置
  3. IPC 方法
    1. 日志
    2. 连接到
    3. 连接到网络
    4. 断开
    5. 服务
    6. 服务网
  4. IPC 存储和默认变量
  5. IPC 活动
  6. 多个IPC 实例
  7. 基本实例
    1. Unix 窗口 Sockets & TCP Sockets 服务器
    2. Unix 窗口 Sockets & TCP Sockets 客户端
    3. UDP Sockets 的服务器客户端( C)
    4. Raw 缓冲、 实时和 / 或 二进制 Sockets
  8. 与 TLS/ SSL Socket 服务器和客户端合作
  9. 节点代码示例

IPC 袜子类型

类型稳定定义
取消 套接字或 Windows 套接字稳定给予Linux,Mac,和Windows闪电快速通信,并避免网络卡来减少间接费用和延迟. 本地 Unix 和 Windows 套接字示例
TCP 套接字稳定给整个网络提供最可靠的通信. 也可以用于本地的 IPC,但是比#1的Unix Socket 执行慢了,因为TCP sockets通过网络卡,而Unix Sockets和Windows Sockets则不通过. 本地或远程网络 TCP 套接字示例
TLS 套接字稳定在SSL上方可配置和安全的网络套接字 。 等同为https. TLS/SSL 文档
UDP 袜子稳定给它 网络通信速度最快. UDP不可靠,但比TCP快得多. 它最好用于流出非关键数据,如声音,视频,或多人游戏数据,因为它可以根据网络连接和其他因素降下数据包. UDP也可以用于本地的 IPC,但比#1的Unix Socket或Windows Socket执行慢,因为UDP套接字通过网络卡,而Unix和Windows Sockets则不使用. 本地或远程网络 UDP 套接字示例
监督办支持的袜子
链接Unix, Posix, TCP, TLS, UDP
麦克Unix, Posix, TCP, TLS, UDP
赢视窗、 TCP、 TLS、 UDP

IPC 配置

ipc.config

在 ipc.config 以覆盖或设定默认值.


    {
        appspace        : 'app.',
        socketRoot      : '/tmp/',
        id              : os.hostname(),
        networkHost     : 'localhost', //should resolve to 127.0.0.1 or ::1 see the table below related to this
        networkPort     : 8000,
        readableAll     : false,
        writableAll     : false,
        encoding        : 'utf8',
        rawBuffer       : false,
        delimiter       : '\f',
        sync            : false,
        silent          : false,
        logInColor      : true,
        logDepth        : 5,
        logger          : console.log,
        maxConnections  : 100,
        retry           : 500,
        maxRetries      : false,
        stopRetrying    : false,
        unlink          : true,
        interfaces      : {
            localAddress: false,
            localPort   : false,
            family      : false,
            hints       : false,
            lookup      : false
        }
    }

变量文档
应用程序空间用于Unix Socket(Unix Domain Socket)命名间隔。 如果不具体设定, Unix Domain Socket 将合并 socketRoot, appspace, 和 id , 形成 Unix Socket 路径, 用于创建或绑定 。 这是可用的, 以防系统运行的应用程序很多, 您可能有多个带有相同 ID 的套接字, 但如果您更改了应用空间, 您仍将有 app special 独有的套接字 .
套接字要创建或绑定 Unix 套接字的目录
编号此套接字或服务的 id
网络热点tCP、 TLS 或 UDP Sockets 应连接的本地或远程主机
网络端口tCP、 TLS 或 UDP 套接字应该连接的默认端口
可读全部使管道可以为所有用户读取,包括窗口服务
可写全部使管道可以为所有用户写入,包括窗口服务
编码在套接字上发送数据的默认编码。 当原始缓冲器设置为真实时主要使用. 有效值为: ascii utf8 utf16le ucs2 base64 hex 。 。 。 .
原始缓冲如果数据属实, 数据将作为原始节点发送和接收 Buffer 没有 a 一个 Object 作为JSON。 这对二进制或六进制 IPC 和以 C 和 C++ 等语言与其他进程进行交流都有好处
分隔符每个数据包末尾的分隔符.
同步同步请求 。 客户端在服务器回复前不会发送新请求 .
无声打开/ 关闭日志默认为虚假, 这意味着日志已启动
登录颜色打开/关闭 util. 检查 ipc.log 的颜色
日志深度设置 util 的深度。 在 ipc.log 期间检查
日志接收 ipc.log 输出的函数; 应采用单一字符串参数
最大连接这是允许到套接字的最大连接数 。 它目前仅被设定在Unix Sockets上. 其他 Socket 类型正在使用系统默认.
重试如果连接丢失, 客户端将会在尝试重新连接到服务器之前等待, 时间为毫秒 。 这不会影响UDP套接字,因为它们没有Unix Sockets和TCP Sockets这样的客户端服务器关系.
最大存储量如果设置, 它代表每次断开后的最大重试次数, 然后放弃并完全杀死一个特定的连接
停止重试默认为虚假含义的客户端将继续重试,以便在重试间隔时无限期地连接到服务器. 如果设定为任意数字, 每次断开后, 客户端都会停止重试 。 如果实时设定为真实, 它将立即停止尝试连接, 不论最大版本 。 如果设置为 0, 客户端会 没有 尝试重新连接 .
取消链接默认为真实意味着模块会在启动前处理删除 IPC 套接字 。 如果您使用 @achrinza/node-ipc 在一个组合环境中,在同一套接字上会有多个听众,您必须设置到 false 然后注意删除您代码中的套接字.
接口主要用于指定客户端应连接的接口. 见 socket.connect 文档在节点.js api

IPC 方法

这些方法见《国际刑法》的范围.


日志

ipc.log(a,b,c,d,e...);

ipc.log 将接受任何数量的论点,如果 ipc.config.silent 尚未设置,它会把它们都挤出一个 " 空格 " ,然后登录到控制台。 这是快速的,因为它阻止了任何凝结 如果ipc.config。 安静 true。这样的话,如果你离开你的伐木 原地,它应该 几乎不会影响性能.

该日志还使用 util.inspect 您可以控制它是否以颜色、日志深度和目的地通过 ipc.config

ipc.config.logInColor = true; //default
ipc.config.logDepth = 5; //default
ipc.config.logger = console.log.bind(console); // default

连接到

ipc.connectTo(id,path,callback);

用作连接本地Unix Sockets和Windows Sockets的客户端. 这是在同一台机器上进行交流的最快方式 因为它绕过TCP和UDP必须同时使用的网络卡.

变量所需经费定义
编号所需经费是连接到的套接字的字符串 ID。 创建时, 将带有此标识的套接字添加到对象的 ipc.
路径选项是 Unix 域名套接字文件的路径,如果系统是 Windows ,则将自动转换为适当的管子,其信息与 Unix 域名套接字文件相同。 如果不设定, 则默认为 ipc.config.socketRoot+ 键ipc.config.appspace+ 键id
回调选项这是创建套接字时要执行的功能 .

实例 只要这些论点还处于秩序状态,就可以予以排除.

ipc.connectTo("world");

或者只使用身份和回调

ipc.connectTo("world", function () {
  ipc.of.world.on("hello", function (data) {
    ipc.log(data.debug);
    //if data was a string, it would have the color set to the debug style applied to it
  });
});

或明确设置路径

ipc.connectTo("world", "myapp.world");

或以回调方式明确设置路径


    ipc.connectTo(
        'world',
        'myapp.world',
        function(){
            ...
        }
    );


连接到网络

ipc.connectToNet(id,host,port,callback)

用于连接客户端到 TCP 或 TLS 套接字 通过网络卡。 它可以是本地或远程的, 如果是本地的, 建议您使用 Unix 和 Windows Socket 执行 connectTo 因为它比网络卡要快得多.

对于 TLS 和 SSL Sockets ,请参看 @achrinza/node-ipc TLS和SSL 文件他们有一些额外的要求, 事情要知道, 也有自己的医生.

变量所需经费定义
编号所需经费是连接到的套接字的字符串 ID。 对于 TCP & TLS 套接字, 此ID 添加到 ipc.of 在创建套接字时引用套接字.
东道主选项是 TCP 或 TLS 套接字所在的主机。 这将默认为 ipc.config.networkHost 如果未指明的话.
端口选项tCP 或 TLS 套接字所在的端口.
回调选项这是创建套接字时要执行的功能 .

实例 只要这些论点还处于秩序状态,就可以予以排除.
因此,虽然默认是: (id,host,port,callback),但以下例子仍然有效,因为它们仍然处于顺序(id,port,callback)或(id,host,callback)或(id,port)等.

ipc.connectToNet("world");

或者只使用身份和回调


    ipc.connectToNet(
        'world',
        function(){
            ...
        }
    );

或明确设置主机和路径


    ipc.connectToNet(
        'world',
        'myapp.com',serve(path,callback)
        3435
    );

或者只明确设置端口和回调


    ipc.connectToNet(
        'world',
        3435,
        function(){
            ...
        }
    );


断开

ipc.disconnect(id)

曾将客户端与Unix,Windows,TCP或TLS套接字断开. 套接字及其再现将被从内存中移除 ipc.of 范围。 这可以是局部或偏僻的. UDP客户端不维持连接,因此没有客户端,这种方法对他们没有价值.

变量所需经费定义
编号所需经费是连接到断开的套接字的字符串 id.

实例

ipc.disconnect("world");

服务

ipc.serve(path,callback);

曾经创建本地的Unix Socket服务器或Windows Socket服务器,客户端可以与之绑定. 服务器可以 emit 对特定客户端 Sockets 的事件,或 broadcast 所有已知客户Sockets的事件.

变量所需经费定义
路径选项这是Unix Domain Socket文件的路径,如果系统是Windows,这将自动被转换成一个与Unix Domain Socket文件相同信息的适当管. 如果不设定, 则默认为 ipc.config.socketRoot+ 键ipc.config.appspace+ 键id
回调选项这是服务器启动后要调用的函数 。 也可以将一个事件绑定在启动事件上, 如 ipc.server.on('start',function(){});

实例 参数可以省略,只要它们仍然有序.

ipc.serve();

或指定回调


    ipc.serve(
        function(){...}
    );

或指定路径

ipc.serve("/tmp/myapp.myservice");

或者说明一切


    ipc.serve(
        '/tmp/myapp.myservice',
        function(){...}
    );


服务网

serveNet(host,port,UDPType,callback)

用于创建TCP,TLS或UDP Socket服务器,客户端可以绑定,其他服务器也可以将数据发送到. 服务器可以 emit 对特定客户端 Sockets 的事件,或 broadcast 所有已知客户Sockets的事件.

变量所需经费定义
东道主选项如果在 os.networkInterfaces () 中未指定此默认地址 。 对于 TCP 、 TLS 和 UDP 服务器, 这很可能是 127. 0.0.1 或 * 1
端口选项TCP、 UDP 或 TLS Socket 服务器将受约束的端口, 如果未指定, 默认为 8000
UDPTYP 软件选项如果设置此选项将创建服务器为 UDP 套接字 。 “ udp4” 或“ udp6” 是有效的值 。 此默认未设定 。 当使用 udp6 时确保指定有效的 IPv6 主机, 如 ::1
回调选项创建服务器时要调用的函数

实例 辩证可以长时间地被排除,因为它们仍然处于秩序之中.

默认 tcp 服务器

ipc.serveNet();

默认 udp 服务器

ipc.serveNet("udp4");

或指定带有回调的 TCP 服务器


    ipc.serveNet(
        function(){...}
    );

或指定带有回调的 UDP 服务器


    ipc.serveNet(
        'udp4',
        function(){...}
    );

或指定端口

ipc.serveNet(3435);

或指定所有 TCP


    ipc.serveNet(
        'MyMostAwesomeApp.com',
        3435,
        function(){...}
    );

或指定所有 UDP


    ipc.serveNet(
        'MyMostAwesomeApp.com',
        3435,
        'udp4',
        function(){...}
    );


IPC 存储和默认变量

变量定义
邮编连接用户时, 套接字的重置会存放于此 ipc.connectTo 或者说 iupc.connectToNet。它们将根据用于创建它们的ID存储,例如: ipc.of.mySocket
ipc.服务器这是对由 ipc.serve 或者说 ipc.serveNet

IPC 服务器方法

方法定义
开始开始服务需要呼叫 serve 或者说 serveNet 首先设置服务器
停下来关闭服务器并停止服务

IPC 活动

事件名称段落定义
错误错误obj发生错误时触发
连接连接套接字时触发
断开当套接字与服务器断开时由客户端触发
套接字. 已断开套接字已销毁 SocketID当客户端套接字断开时由服务器触发
销毁当套接字被完全销毁时, 不再进行自动重试, 所有引用都消失 .
数据缓冲当 ipc.config.rawBuffer 属实并收到消息时触发.
您的事件类型您的事件数据当收到 JSON 消息时触发 。 事件名称将是您信件中的类型字符串, 参数将是您信件中的数据对象 : { type:'myEvent',data:{a:1}}

多个IPC实例

有时你可能需要明确而独立的 @achrinza/node-ipc。 仅针对这些情景,我们已经暴露了IPC单子的核心IPC类.

const RawIPC = require("@achrinza/node-ipc").IPC;
const ipc = new RawIPC();
const someOtherExplicitIPC = new RawIPC();

//OR

const ipc = require("@achrinza/node-ipc");
const someOtherExplicitIPC = new ipc.IPC();

//setting explicit configs

//keep one silent and the other verbose
ipc.config.silent = true;
someOtherExplicitIPC.config.silent = true;

//make one a raw binary and the other json based ipc
ipc.config.rawBuffer = false;

someOtherExplicitIPC.config.rawBuffer = true;
someOtherExplicitIPC.config.encoding = "hex";

基本实例

你们可以找到 高级示例 在示例文件夹中。 在示例中,您将找到更复杂的演示,包括多个客户端实例.

Unix Sockets、 Windows Sockets 和 TCP Sockets 服务器

服务器是保存 IPC 的套接字的程序 。 多个套接字可以连接到这个服务器并与之交谈. 它还可以对所有客户进行广播,也可以向特定客户发送. 这是当地Unix和Windows Sockets以及当地或远程网络TCP Sockets最基本的例子.

var ipc = require("@achrinza/node-ipc");

ipc.config.id = "world";
ipc.config.retry = 1500;

ipc.serve(function () {
  ipc.server.on("message", function (data, socket) {
    ipc.log("got a message : ".debug, data);
    ipc.server.emit(
      socket,
      "message", //this can be anything you want so long as
      //your client knows.
      data + " world!"
    );
  });
  ipc.server.on("socket.disconnected", function (socket, destroyedSocketID) {
    ipc.log("client " + destroyedSocketID + " has disconnected!");
  });
});

ipc.server.start();

Unix Sockets & TCP Sockets 客户端

该客户端连接到服务器套接字,用于进程间通信. 该套接字将接收向它具体发送的事件以及服务器在套接字上广播的事件。 这是对本地Unix Sockets和本地或远程网络TCP Sockets都有用的最基本的例子.

var ipc = require("@achrinza/node-ipc");

ipc.config.id = "hello";
ipc.config.retry = 1500;

ipc.connectTo("world", function () {
  ipc.of.world.on("connect", function () {
    ipc.log("## connected to world ##".rainbow, ipc.config.delay);
    ipc.of.world.emit(
      "message", //any event or message type your server listens for
      "hello"
    );
  });
  ipc.of.world.on("disconnect", function () {
    ipc.log("disconnected from world".notice);
  });
  ipc.of.world.on(
    "message", //any event or message type your server listens for
    function (data) {
      ipc.log("got a message from world : ".debug, data);
    }
  );
});

UDP Sockets 的服务器客户端( C)

UDP 服务器 Sockets与Unix,Windows & TCP Sockets不同,因为它们必须被捆绑到自己机器上一个独特的端口来接收消息. 例如,一个TCP,Unix,或Windows Socket客户端可以仅仅连接到一个单独的TCP,Unix,或Windows Socket断接. 然后,该客户端可以交换服务器端口或位置上的数据,无论是发送还是接收。 UDP 服务器 袜子不能这样做。 它们必须绑定在港口接收或发送数据.

这意味着一个UDP客户端和服务器是同一事物,因为为了接收数据,一个UDP Socket必须拥有自己的端口才能接收数据,而且每次只有一个过程可以使用这个端口. 这也意味着为了 emit 或者说 broadcast 数据 UDP 服务器需要知道它打算将数据广播到的 Socket 的主机和端口.

这是当地和偏远的UDP Sockets最基本的例子.

UDP 服务器 1 - "世界"
var ipc = require("../../../@achrinza/node-ipc");

ipc.config.id = "world";
ipc.config.retry = 1500;

ipc.serveNet("udp4", function () {
  console.log(123);
  ipc.server.on("message", function (data, socket) {
    ipc.log(
      "got a message from ".debug,
      data.from.variable,
      " : ".debug,
      data.message.variable
    );
    ipc.server.emit(socket, "message", {
      from: ipc.config.id,
      message: data.message + " world!",
    });
  });

  console.log(ipc.server);
});

ipc.server.start();
UDP 服务器 2 - "你好"

说明 我们把这里的端口设置为8001,因为世界服务器已经使用默认的 ipc.config.networkPort of 8000. 因此,当世界正在使用它的时候,我们无法将它与8000捆绑起来.

ipc.config.id = "hello";
ipc.config.retry = 1500;

ipc.serveNet(8001, "udp4", function () {
  ipc.server.on("message", function (data) {
    ipc.log("got Data");
    ipc.log(
      "got a message from ".debug,
      data.from.variable,
      " : ".debug,
      data.message.variable
    );
  });
  ipc.server.emit(
    {
      address: "127.0.0.1", //any hostname will work
      port: ipc.config.networkPort,
    },
    "message",
    {
      from: ipc.config.id,
      message: "Hello",
    }
  );
});

ipc.server.start();

Raw 缓冲或 二进制袜子

二进制或缓冲套接字可用于上述任何套接字类型,但数据事件释放的方式 一点点 不一样 如果与嵌入式系统或C/C++进程合作,这些可能是有益的。 甚至可以确保匹配 C 或 C++ 字符串打入.

当设置原始缓冲套接器时, 您必须指定它 :

ipc.config.rawBuffer = true;

也可以指定其编码类型。 默认是 utf8

ipc.config.encoding = "utf8";

发出字符串缓冲 :

//server
ipc.server.emit(socket, "hello");

//client
ipc.of.world.emit("hello");

发出字节数组缓冲 :

//hex encoding may work best for this.
ipc.config.encoding = "hex";

//server
ipc.server.emit(socket, [10, 20, 30]);

//client
ipc.server.emit([10, 20, 30]);

发送二进制或六进制阵列缓冲器,这最适合实时数据传输,尤其是与 C 或 C++ 进程或嵌入式系统连接:

ipc.config.encoding = "hex";

//server
ipc.server.emit(socket, [0x05, 0x6d, 0x5c]);

//client
ipc.server.emit([0x05, 0x6d, 0x5c]);

在连接到 C 或 C++ 进程或嵌入式系统时,将明确的缓冲器,内置型号,双相,浮相等以及大端和小端相等数据写入原始缓冲器的怀旧值(此处参见关于缓冲器的更详细信息以及UInt,内置,双相等)[https://nodejs.org/api/buffer.html (中文(简体) )[]:

ipc.config.encoding = "hex";

//make a 6 byte buffer for example
const myBuffer = Buffer.alloc(6).fill(0);

//fill the first 2 bytes with a 16 bit (2 byte) short unsigned int

//write a UInt16 (2 byte or short) as Big Endian
myBuffer.writeUInt16BE(
  2, //value to write
  0 //offset in bytes
);
//OR
myBuffer.writeUInt16LE(0x2, 0);
//OR
myBuffer.writeUInt16LE(0x02, 0);

//fill the remaining 4 bytes with a 32 bit (4 byte) long unsigned int

//write a UInt32 (4 byte or long) as Big Endian
myBuffer.writeUInt32BE(
  16772812, //value to write
  2 //offset in bytes
);
//OR
myBuffer.writeUInt32BE(0xffeecc, 0);

//server
ipc.server.emit(socket, myBuffer);

//client
ipc.server.emit(myBuffer);

与该服务器 cluster 模块

@achrinza/node-ipc 可用节点.js' 集群模块 以提供拥有多个读取器用于单个套接字的能力。 这样做只需要你设置 unlink 属性 false 并注意在主进程中解开套接字路径:

服务器
const fs = require("fs");
const ipc = require("../../../@achrinza/node-ipc");
const cpuCount = require("os").cpus().length;
const cluster = require("cluster");
const socketPath = "/tmp/ipc.sock";

ipc.config.unlink = false;

if (cluster.isMaster) {
  if (fs.existsSync(socketPath)) {
    fs.unlinkSync(socketPath);
  }

  for (let i = 0; i < cpuCount; i++) {
    cluster.fork();
  }
} else {
  ipc.serve(socketPath, function () {
    ipc.server.on("currentDate", function (data, socket) {
      console.log(`pid ${process.pid} got: `, data);
    });
  });

  ipc.server.start();
  console.log(`pid ${process.pid} listening on ${socketPath}`);
}
客户端
const fs = require("fs");
const ipc = require("../../@achrinza/node-ipc");

const socketPath = "/tmp/ipc.sock";

//loop forever so you can see the pid of the cluster sever change in the logs
setInterval(function () {
  ipc.connectTo("world", socketPath, connecting);
}, 2000);

function connecting(socket) {
  ipc.of.world.on("connect", function () {
    ipc.of.world.emit("currentDate", {
      message: new Date().toISOString(),
    });
    ipc.disconnect("world");
  });
}

麻省理工学院颁发的许可证

见 麻省理工学院许可证 文档.

版本与发布记录

@achrinza/node-ipc 共发布 23 个版本,首次发布于 2022/03/18;过去 12 个月发布了 1 个版本。

版本发布日期距今
9.2.10latest2025/12/2110 个月前
10.1.112024/05/282 年前
9.2.9latest-v92024/05/282 年前
10.1.102023/10/253 年前
9.2.82023/10/223 年前
10.1.92023/06/233 年前

关于 @achrinza/node-ipc 的常见问题

@achrinza/node-ipc 是什么?

本地和远程进程间通信(IPC)的节点模块,神经网络,能为机器学习提供方便.

如何安装 @achrinza/node-ipc?

在项目目录运行 npm install @achrinza/node-ipc,或使用 pnpm add / yarn add / bun add。

@achrinza/node-ipc 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/achrinza__node-ipc 是否存在。

@achrinza/node-ipc 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@achrinza/node-ipc 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@achrinza/node-ipc 可以商用吗?

@achrinza/node-ipc 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@achrinza/node-ipc 的下载量有多少?

根据 npm 官方下载统计,@achrinza/node-ipc 在 2026/10/05 – 2026/11/03 这 30 天内被下载 1,647,725 次,日均约 54,924 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@achrinza/node-ipc 还在维护吗?

最新版本 9.2.10 发布于 2025/12/21(10 个月前);至今共发布 23 个版本,其中过去 12 个月发布了 1 个;首次发布于 2022/03/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。