unix-socket-leader

Elect a leader using unix sockets

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
unix-socket-leader
2000.1.28 years ago9 years agoMinified + gzip package size for unix-socket-leader in KB

Readme

unix-socket-leader
!travistravis-badgetravis-url !gitgit-badgegit-url !npmnpm-badgenpm-url
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 hereexample 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() instance.close()

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.