Reconnect a stream (tcp, ws, tls, http) when network goes down.

Status: LEGACY, use reconnect-core

This module should now be considered legacy, it is recommend to use reconnect-core directly. This module is now only a bundle of wrappers around reconnect-core.

Currently supports:


Pass a function that will be called every time the stream connects. if the connection is broken, reconnect will make a new connection and call this function again.

var reconnect = require('reconnect')

reconnect(function (stream) {
  //called every time the connection is remade.
  //only one connection will ever be live at one time.


websockets can be used from both the client and the server, with the same code!

var reconnect = require('reconnect/shoe')

reconnect(function (stream) {
  //called every time the connection is remade.
  //only one connection will ever be live at one time.

a shoe server must be used.


reconnect (opts, onConnect)

if opts is an object it will be passed to backoff which handles throttling the reconnection attempts. it also accepts a type parameter, which may be either 'fibonacci' or 'exponential'.

//example opts
var opts = {
  randomisationFactor: 0,
  initialDelay: 10,
  maxDelay: 300

opts is optional. If opts.immediate is true then we will treat the stream as if it does not emit a "connect" event and fall back to listening to the first piece of data. This is useful for non connection streams like database cursors or tailing files.

passing onConnect to reconnect is short hand for reconnect(opts).on('connect', onConnect)

reconnect.connect (...)

attempt to connect. the arguments will be passed onto the underlying stream type. (either you are calling shoe(uri) or net.connect(port)) these arguments will be used for every subsequent connection attempt.

emit('connect', stream)

emitted when a new connection is made (that includes after a disconnection!)

emit('disconnect', stream)

emitted when the stream has disconnected.

emit ('backoff', attempts, delay)

reemitted from backoff when reconnect is waiting for the next time to connect.

emit ('reconnect', attempts, delay)

emitted when attempting a new connection.


set to false and reconnect will not automatically reconnect. starts out true.


Use reconnect-core instead.


The reconnect widget has been moved into a separate module reconnect-widget