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.

They be more like guidelines

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) {
  // ...
});

:tada: