@aller/rtc-reconnect
v1.0.0
Published
Repository for Allers approach to reconnecting websockets, with possibility of elavating on fallbacks
Downloads
3
Readme
RTCReconnect
RTCReconnect (name pending) is the websocket with reconnect functionality repo for Aller. In the future, this might be expanded to include functionality for fallback protocols when websockets is not accessible for the current connection.
Use
Using the package is quite simple;
import { RTCReconnect } from '@aller/rtc-reconnect'
// The hostname here can be both with https, http, ws, wss and so on, it is stripped, always.
const client = new RTCReconnect(`localhost:PORT`, {
reconnect?: boolean
protocols?: string | string[]
secure?: boolean
})
// After you have created a new instance of RTCReconnect, you can add the listeners on the object
client.on(Events.MESSAGE, (event) => { [...] })
client.on(Events.RECONNECT, (event) => { [...] })
client.on(Events.OPEN, (event) => { [...] })
client.on(Events.CLOSE, (event) => { [...] })
client.on(Events.ERROR, (event) => { [...] })
// After listeners have been added, you can connect
client.connect()
// If you want to remove any listeners, you can call
client.off(Events.EVENTNAME, FUNCTIONYOUADDEDHERE)
// When its time to disconnect, this can be done with
client.disconnect()
// To get a simplified view of the state and whether the client is connected,
// you can run
client.connected()
// If you need more info on the state of the client, the full state is also exposed
client.state()
To combat multiple clients reconnecting at the same time, the reconnect-time is set to a random number between 0-3000 ms. This should probably be improved on, depending on the performance of this.
Testing
Tests are done with ts-jest
, and mocks a websocket server locally that returns whatever is sent to the server, back to the client. The tests includes tests for sending and receiving data + reconnect-functionality
yarn test
See if there are any tests breaking.
If you want to test in your browser, you can run
yarn test:browser