node.js module to elect a master peer in a distributed system
JavaScript
Latest commit c8cbe0d Apr 27, 2015 Lars Jacob version 0.2.3
Permalink
Failed to load latest commit information.
.gitignore first commit Jun 11, 2013
LICENSE first commit Jun 11, 2013
README.md Removed code and added reference to file Apr 22, 2014
example.js Fixed ids in example Apr 22, 2014
index.js Merge branch 'watchdog/init' Apr 27, 2015
package.json version 0.2.3 Apr 27, 2015

README.md

Bully

node.js module to elect a master peer in a distributed system. This module uses the Bully Algorithm for the election process. Unresponsive/offline peers will be recognized through heartbeat timeouts.

Usage

Install via npm:

npm install bully

Include in your project

var Bully = require('bully');

var opts = { id: "id", /* unique identifier of this peer */
             peers: [], /* event emitter instances of other peers */
             me: me /* event emitter instance of local peer */
           }

var bully = new Bully(opts);

bully.on("master", function () {
    console.dir('I am now the master');
});
bully.on("stepped_down", function () {
    console.dir('Unfortunately I had to step down from my responsibilities');
});

Adding a new peer

var EventEmitter = require('events').EventEmitter;

var peer = new EventEmitter();
peer.id = 'anoter_unique_id';

bully.addPeer(peer);

Remove peer

bully.removePeer("peers_unique_id");

Error handling

bully.on("error", function (err) {
    // handle error here
});

Errors:

  • Unknown Peer: triggered once a message is received from an unknown

Example

See example.js. Run with full debug information as follows:

DEBUG=bully npm test