masterless
A fancy tcp client and server that acts as neither, and abstracts out connection deduplication between identical nodes. Uses msgpack for serialization.
Install
$ npm install masterless
Test
Run any of the following:
$ mocha$ npm test$ make test
Note: remember to npm install
to get those yummy dev dependencies!
API
var Server = ; var left = 'e4663c9c3f9a89112afc48389a951e09';var right = 'b073a8ee09e1daca57e9d54a5efe5684'; left; right; left;right; { if packettype === 'counter' packettotal % 100 === 0 && console; this; else console; }
For more examples, see examples.
Server(id, [options])
Construct a new server object, with an id unique to context in which the server is used. Optionally specify a port
to listen on.
var server = '67d2cb3db178bc5ca7d9f7157e3119aa';var serverWithPort = '81358297b83f2d4d6cfa58ba5aff6180' port: 23412;
server.connect(transport)
Connect to a remote node via a transport uri. Automatically sets the node as a keep node.
server;server;
server.disconnect(id)
Disconnect from a remote via a node id.
server;
server.keep(id, [true|false])
Reconnects to the specified node if the connection dies.
server;
server.info()
Returns a formatted transport uri. The result of this function is included in the listening
event. The info
method returns null
if the server has yet to initialize.
server; // => 'tcp://192.168.1.64:35649'
server.close([callback])
Ends all connections and closes the server.
server;
server.send(id, packet)
Sends a packet to one or more nodes. Returns false if unable to send for a single destination.
server;server; server; // returns false
Features
Connection Deduplication
The following example will open two connections, then close exactly one as the handshake completes.
var left = ...;var right = ...; left;right;
Multiple Dispatch
Send messages to multiple nodes with low overhead (doesn't reencode the packet).
server;
Limited Reconnection
Use the keep
method to specify a connection is locally important, and the server will attempt to reconnect once between disconnecting.
var left = ...;var right = ...; // both nodes will unilaterally try to reconnectright;left; left;
Caveats
- The wire protocol is not yet stable--it is a simple protocol, but could be far more lightweight.
License
The MIT License (MIT)