# reconnect

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

Latest version **2.0.2** (published 2014-10-06) · MIT license · 0 weekly downloads

## Install

```sh
npm install reconnect
pnpm add reconnect
yarn add reconnect
bun add reconnect
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.2 |
| Published | 2014-10-06 |
| First published | 2012-08-15 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 5 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 53 |
| Author | 'Dominic Tarr' |
| Maintainers | dominictarr |

## Links

- npm: https://www.npmjs.com/package/reconnect
- Repository: https://github.com/dominictarr/reconnect
- Issues: https://github.com/dominictarr/reconnect/issues
- npm.io page: https://npm.io/package/reconnect

## Dependencies (5)

- [shoe](https://npm.io/package/shoe.md) >=0.0.7 <1
- [request](https://npm.io/package/request.md) >=2.12 <3
- [sockjs-stream](https://npm.io/package/sockjs-stream.md) >=1 <2
- [reconnect-core](https://npm.io/package/reconnect-core.md) ~0.2.1
- [engine.io-stream](https://npm.io/package/engine.io-stream.md) ~0.4.2

## Recent versions

- 2.0.2 (latest) — 2014-10-06
- 2.0.1 — 2014-07-01
- 2.0.0 — 2014-01-31
- 1.5.2 — 2013-08-09
- 1.5.1 — 2013-07-24
- 1.5.0 — 2013-06-22
- 1.4.2 — 2013-06-17
- 1.4.1 — 2013-06-17
- 1.3.4 — 2013-06-06
- 1.3.3 — 2013-06-06
- 1.3.2 — 2013-06-06
- 1.3.1 — 2013-05-23
- 1.3.0 — 2013-05-23
- 1.2.1 — 2013-05-12
- 1.2.0 — 2013-05-12
- … 23 more at https://npm.io/package/reconnect/versions

## README

# reconnect

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

## Status: LEGACY, use [reconnect-core](https://github.com/juliangruber/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:
* [tcp](http://nodejs.org/api/net.html)
* [shoe](https://github.com/substack/shoe) (websocket fallback - on the client-side)
* [tls](http://nodejs.org/api/tls.html)
* [sockjs-stream](https://github.com/Raynos/sockjs-stream) (server side websockets)
* [engine.io-stream](https://github.com/Raynos/engine.io-stream)

## Example

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.
``` js
var reconnect = require('reconnect')

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

## WebSockets

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

``` js
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.
}).connect('http://localhost:8080/ws')
```

a [shoe](http://npm.im/shoe) server must be used.

## API

### reconnect (opts, onConnect)

if `opts` is an object it will be passed to [backoff](https://github.com/MathieuTurcotte/node-backoff)
which handles throttling the reconnection attempts. it also accepts a `type` parameter, which may
be either `'fibonacci'` or `'exponential'`.

``` js
//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](https://github.com/MathieuTurcotte/node-backoff)
when reconnect is waiting for the next time to connect.

### emit ('reconnect', attempts, delay)

emitted when attempting a new connection.

### reconnector.reconnect

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

## Extending

Use [reconnect-core](https://github.com/juliangruber/reconnect-core) instead.

## Widget

The reconnect widget has been moved into a separate module
[reconnect-widget](https://github.com/dominictarr/reconnect-widget)

## License

MIT

---
_Source: https://npm.io/package/reconnect · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
