autonode

Connect a cluster on a single machine. One node starts a server on a given port, but if the address is in use, become a client, and connect to that port instead.

autonode

Create a node that starts a tcp server on a port, but if the address is in use, connect to that port instead.

Also, if the current server goes down, another node will become the server.

NOTE: this only works for a cluster on a single machine.

This is the code for both the server and the client.

var autonode = require('autonode')
 
autonode(function (stream) {
  // called when a connection is made, whether 
  // this node turns out to be the client or the server. 
}).listen(PORT)

Naturally you will need to use a decentralized communication protocol. checkout crdt or scuttlebutt

MIT