nmsg
Version:
Interprocess messenger for Node.js
65 lines (44 loc) • 2.2 kB
Markdown
> 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