unix-socket-leader

0.1.2 • Public • Published

unix-socket-leader

travis git npm

Elect a leader using unix sockets, inspired by level-party and a late night conversation with @mafitonsh at nodejsconf.it.

Install

To install unix-socket-leader, simply use npm:

npm install unix-socket-leader --save

Example

The example below can be found here and ran using node example.js. It demonstrates how to use unix-socket-leader to build a simple chat room.

'use strict'
 
var leader = require('unix-socket-leader')('chat')
var eos = require('end-of-stream')
var sockets = []
var popts = { end: false }
 
leader.on('leader', function () {
  console.log('!! I am the the leader now', process.pid)
})
 
leader.on('connection', function (sock) {
  sock.write('!! connected to ' + process.pid)
  sock.write('\n')
 
  sockets.forEach(function (other) {
    other.pipe(sock, popts).pipe(other, popts)
  })
 
  sockets.push(sock)
 
  eos(sock, function () {
    sockets.splice(sockets.indexOf(sock), 1)
  })
})
 
leader.on('client', function (sock) {
  process.stdout.pipe(sock, popts).pipe(process.stdout, popts)
})

API


leader(name)

Creates a new instance of unix-socket-leader.

Events:

  • leader, emitted when this instance is elected leader
  • client, emitted when this instance is connected to a leader (even itself); the first argument is the connected socket
  • connection, emitted when there is a new incoming connection, and this instance is the leader; the first argument is the connected socket

instance.close([cb])

Closes the instance, severing all current connections.

License

Copyright Matteo Collina 2015, Licensed under MIT.

Dependents (1)

Package Sidebar

Install

npm i unix-socket-leader

Weekly Downloads

268

Version

0.1.2

License

MIT

Last publish

Collaborators

  • matteo.collina