0.2.1 • Published 4 years ago

@slimio/ipc v0.2.1

Weekly downloads
27
License
MIT
Repository
github
Last release
4 years ago

ipc

stability-unstable version Maintenance MIT dep size Known Vulnerabilities Build Status Greenkeeper badge

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

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

NameRefactoringSecurity RiskUsage
@slimio/isMinorLowType Check
@slimio/safe-emitterMinorMediumSafe Node.js Emitter (error isolation)
uuidMinorLowUnique ID

License

MIT

0.2.1

4 years ago

0.2.0

4 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago