@slimio/ipc
v0.2.1
Published
Node.js Inter Process Communication
Downloads
128
Readme
ipc
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.
Features
- Send message with subjects (allow you to build comprehensive code).
- Support streaming communication in both-end
Requirements
- Node.js v12 or higher
Getting Started
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/ipc
Usage example
Create a master.js
file with the following code:
// Node.js Dependencies
const { fork } = require("child_process");
const { join } = require("join");
const { strictEqual } = require("assert");
// Third-party Dependencies
const IPC = require("@slimio/ipc");
async function main() {
const cp = fork(join(__dirname, "worker.js"));
const master = new IPC(cp);
strictEqual(master.isMaster, true);
const ret = await master.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");
const IPC = require("@slimio/ipc");
const slave = new IPC();
strictEqual(slave.isMaster, false);
slave.on("sayHello", (nickName, next) => {
// use next() to send a response!
next(`hello ${nickName}`);
});
API
You have to subscribe to the event-emitter to get incomming messages.
constructor(cp?: ChildProcess)
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(subject: String, data: any): Promise< any >
Send a message to the master or slave (depending on the side).
on(subject: string, subscriber: (payload: any, next) => void): void
Subscribe to a given subject.
ipc.on("subject", (payload, next) => {
console.log("received subject!");
next();
});
Stream communication
SlimIO IPC bring support for stream communication.
TBC
Roadmap
- Implement Node.js workers!
Dependencies
|Name|Refactoring|Security Risk|Usage| |---|---|---|---| |@slimio/is|Minor|Low|Type Check| |@slimio/safe-emitter|Minor|Medium|Safe Node.js Emitter (error isolation)| |uuid|Minor|Low|Unique ID|
License
MIT