UNPKG

nmsg

Version:

Interprocess messenger for Node.js

65 lines (44 loc) 2.2 kB
# Node Messenger > This is work in progress, use at YOUR own risk. Inter-process communication (IPC) for Node.js, designed for easy communication between two remote JavaScript processes. Features include: - Client and server with bidirectional communication -- each can `.emit` and listen `.on` events. - Your can send callbacks as arguments for a remote call, like `router.emit('event', 'data', callback)`. - Multiple callbacks per event supported, if called on the remote host, arguments for those callbacks will be passed back, where arguments can themselves be callbacks, this nesting can be [arbitrarily deep](./examples/callbacks.ts). - Evented router, you add events using: `router.on('event', callback)`. - `RouterBuffered` buffers outgoing messages for few milliseconds, then sends a bulk packet. This allows to combine many small messages into one. - Pluggable transports (currently implemented `TCP`). - Pluggable data serializers (currently implemented `JSON` and `MsgPack`). - Exponential backoff for client and server to retry connection. - Stream buffering -- even if server is temporarily down, your messages will still likely be delivered, see example below: For examples see [`./examples`](./examples) folder, here is one: ```js var nmsg = require('nmsg'); var config = { host: '127.0.0.1', port: 8081 }; var server = new nmsg.server.factory.Tcp(config); var client = new nmsg.client.factory.Tcp(config); server.start().on('start', function() { console.log('Server started.'); }); client.start(); server.on('socket', function(socket) { socket.router.on('ping', function() { console.log('Ping received!'); }); }); console.log('Sending ping.'); client.router.emit('ping'); ``` In this example we send the `ping` event even before the server has been started, yet the event is received, here is console output: Sending ping. Server started. Ping received! *TypeScript* type definitions available in [./nmsg.d.ts](./nmsg.d.ts). Getting started: npm run start Testing npm run test Generate `nmsg.d.ts` typing file: npm run typing