0.1.2 • Published 10 years ago

unix-socket-leader v0.1.2

Weekly downloads
1,297
License
MIT
Repository
github
Last release
10 years ago

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()
  • 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.

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago