1.0.0-beta.1 • Published 2 years ago

@aller/real-time-flow v1.0.0-beta.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

websockets and stuff

RealTimeFlow (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 { RealTimeFlow } from '@aller/real-time-flow'

// The hostname here can be both with https, http, ws, wss and so on, it is stripped, always.
const client = new RealTimeFlow(`localhost:PORT`, {
    reconnect?: boolean
    protocols?: string | string[]
    secure?: boolean
}) 

// After you have created a new instance of RealTimeFlow, 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