Pirate
Pirate RPC is a framework for implementing session-oriented remote procedure APIs. It is very well suited for building service-to-service WebSocket interfaces, but really doesn’t care that much. Pirate uses a Driver interface to abstract protocol-specific interfaces out of its internals.
Pirate provides a flexible interface for
- Defining extensible message types
- Request/response message synchronization
- Pub/sub subscription management and cleanup
- Testing
Getting Started
$ npm install --save pirate-rpc
Create a new controller
const Pirate = require('pirate-rpc');
const WS = require('ws');
// ...
const ws = new WS.Server({port: 8080})
const rpc = new Pirate(Pirate.Driver.WS).listen(ws);
rpc.handle('app:foo', function(message, session) {
session.message('app:bar').reply(message).send();
});
Connect to a server
const Pirate = require('pirate-rpc');
const WS = require('ws');
const ws = new WS('http://server:8080');
const rpc = new Pirate(Pirate.Driver.WS);
const session = rpc.connect(ws);
session.send('app:foo', {}, {synchronous: true}, function(err, reply) {
// ...
});