Skip to content

Repository files navigation

ipc

stability-unstableversionMaintenanceMITdepsizeKnown VulnerabilitiesBuild Status

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 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}`);});

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)
@lukeed/uuidMinorLowUnique ID

License

MIT

About

SlimIO - Node.js Inter Process Communication

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages