reconnecting-simple-websocket
v2.0.1
Published
WIP - nothing to see here
Downloads
23
Readme
reconnecting-simple-websocket
State machine for reconnecting simple-websockets. Subclass of reconnecting-socket.
npm install reconnecting-simple-websocket
Usage
const RSWS = require('reconnecting-simple-websocket')
const rsws = new RSWS('ws://localhost:8085', {
onopen (socket, firstOpen) {
// What gets called wheny you have a live socket
console.log('onopen')
this.pinger = setInterval(() => socket.write('ping'), 1000)
socket.on('data', buf => console.log(buf.toString('utf8')))
},
onclose (socket) {
// what to do when the socket is closed
console.log('onclose')
clearInterval(this.pinger)
},
onfail (err) {
// handle the final error that caused the fail
console.log('onfail')
console.error(err)
}
})
rsws.on('state', (st) => console.log(`state: ${st}`))
rsws.on('info', (st) => console.log(`info: ${st}`))
rsws.on('error', (err) => console.error(`error: ${err}`))
rsws.start() // start it
RSWS
can also be subclassed:
const RSWS = require('reconnecting-simple-websocket')
class MySWS extends RSWS {
constructor (opts) {
super(opts)
this.someHandler = this.someHandler.bind(this)
}
someHandler (buf) {
// whatever
}
onopen (socket, firstOpen) {
this.pinger = setInterval(() => socket.write('ping'), 1000)
socket.on('data', this.someHandler)
}
onclose (socket) {
socket.removeListener('data', this.someHandler)
clearInterval(this.pinger)
}
onfail (err) {
console.error(err)
}
}
module.exports = MySWS
API
const RSWS = require('reconnecting-simple-websocket')
Import the RSWS
class.
rsws = new ReconnectingSocket(opts)
Create a new reconnecting simple websocket instance. The opts
object can receive the user implemented methods listed below as well as the following optional options:
{
backoff: {
strategy: 'fibonacci', // the backoff strategey to use
failAfter: null, // the number of consecutive times to attemt a reconnect before failing
...backoffOptions // all the options from the backoff module
}
}
See full set of backoff options here: MathieuTurcotte/node-backoff
rsws
Events
An instance of rsws
inherets the same events as reconnecting-socket.
state
: The state emmits the followingstate
strings:stopped
opening
opened
closing
closed
reopening
fail
info
: Messages that can be used for debugging.error
: Errors emitted by the socket or internally. For an error handling path, seereconnectingSocket.onfail(err)
.
rsws.start()
Start the reconnecting simple websocket.
rsws.stop()
Stop the reconnecting simple websocket.
User Implemented Methods
rsws.onopen(socket, firstOpen)
This method is called whenever a new socket is created and the this.open()
method has been called, so the socket should be live and ready for data. It receives the socket
as well as firstOpen
boolean which indicates if this is the first successful connection since calling reconnectingSocket.start()
. Interact with the socket in this function body.
rsws.onclose(socket)
This method is called when the this.close()
method is called. Use this to clean up any event listeners or intervals used on the socket.
rsws.onfail(err)
This method is called when the reconnectignSocket fails to connect after failAfter
concecutive attempts. It receives the last error emitted by the various moving parts.
See also
License
MIT