UNPKG

ipc-network

Version:

Inter-process communication network, allows multiple node process to exchange messages using unix-socket.

83 lines (60 loc) 1.99 kB
# ipc-network Inter-process communication network, allows multiple node process to exchange messages using fast datagram unix-socket. Also support RPC request (command is send to another process, and response is returned as a Promise, resolved when response arrives). ## Installation ```bash npm i ipc-network --save ``` ## Examples #### Start listening for messages ```typescript import {IpcNetwork, Message} from "ipc-network"; const ipc = new IpcNetwork('process-A'); ipc.on('error', (error: Error) => { console.log(error.message); }); ipc.on('message', (data: Message) => { console.log(`New message from ${data.from}: ${data.message.toString()}`); }); ipc.startListening(); ``` #### Sending messages ```typescript import {IpcNetwork} from "ipc-network"; const ipc = new IpcNetwork('process-A'); ipc.on('error', (error: Error) => { console.log(error.message); }); ipc.send('example content', 'process-B'); ``` #### Sending RPC (requesting job) ```typescript import {IpcNetwork} from "ipc-network"; const ipc = new IpcNetwork('process-A'); ipc.on('error', (error: Error) => { console.log(error.message); }); ipc.sendRpc('example-job', 'process-B', 500).then((result: Buffer) => { console.log(`Received job data: ${result.toString()}`); }).catch((error: Error) => { console.log(error.message); }); ``` #### Receiving job ```typescript import {IpcNetwork} from "ipc-network"; const ipc = new IpcNetwork('process-B', (jobName: string, from: string) => { console.log(`Received new job "${jobName}" from: ${from}`); return Buffer.from('example jpb results!'); }); ipc.on('error', (error: Error) => { console.log(error.message); }); ipc.startListening(); ``` ## Additional information #### Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate. #### License [GPL-3.0](https://choosealicense.com/licenses/gpl-3.0/)