Node.js end-to-end IPC (Inter Process Communication). The goal of this package is to reduce the code required to implement an interaction between two Node.js process.
- Send message with subjects (allow you to build comprehensive code).
- Support streaming communication in both-end
- Node.js v12 or higher
This package is available in the Node Package Repository and can be easily installed with npm or yarn.
$ npm i @slimio/ipc
# or
$ yarn add @slimio/ipcCreate a master.js file with the following code:
// Node.js Dependenciesconst{ fork }=require("child_process");const{ join }=require("join");const{ strictEqual }=require("assert");// Third-party DependenciesconstIPC=require("@slimio/ipc");asyncfunctionmain(){constcp=fork(join(__dirname,"worker.js"));constmaster=newIPC(cp);strictEqual(master.isMaster,true);constret=awaitmaster.send("sayHello","bob");strictEqual(ret,"hello bob");cp.disconnect();}main().catch(console.error);And now create a worker.js file at the same location with the following code:
const{ strictEqual }=require("assert");constIPC=require("@slimio/ipc");constslave=newIPC();strictEqual(slave.isMaster,false);slave.on("sayHello",(nickName,next)=>{// use next() to send a response!next(`hello ${nickName}`);});You have to subscribe to the event-emitter to get incomming messages.
Create a new IPC instance. Take a Node.js ChildProcess instance when the script is "Master". Creating an IPC as slave on a master script will throw an Error.
Send a message to the master or slave (depending on the side).
Subscribe to a given subject.
ipc.on("subject",(payload,next)=>{console.log("received subject!");next();});SlimIO IPC bring support for stream communication.
TBC
- Implement Node.js workers!
| Name | Refactoring | Security Risk | Usage |
|---|---|---|---|
| @slimio/is | Minor | Low | Type Check |
| @slimio/safe-emitter | Minor | Medium | Safe Node.js Emitter (error isolation) |
| @lukeed/uuid | Minor | Low | Unique ID |
MIT