This is work in progress, use at YOUR own risk.
- Client and server with bidirectional communication -- each can
- 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.
- Evented router, you add events using:
RouterBufferedbuffers outgoing messages for few milliseconds, then sends a bulk packet. This allows to combine many small messages into one.
- Pluggable transports (currently implemented
- Pluggable data serializers (currently implemented
- 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 folder, here is one:
var nmsg = ;var config =host: '127.0.0.1'port: 8081;var server = config;var client = config;serverstart;clientstart;server;console;clientrouter;
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.
npm run start
npm run test
nmsg.d.ts typing file:
npm run typing