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

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.

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

If running in the browser, tab-stream is used instead of net.

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. 
  if(this.isServer) 
    console.log('we are the server')
  if(this.isClient)
    console.log('we are the client')
 
}).listen(PORT)

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

MIT