39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
export default class WebsocketClient {
|
|
|
|
/**
|
|
* @param websocketUrl
|
|
* @param listener
|
|
* @param reconnectOnCloseAfter time to reconnect after connection fail in ms. -1 to not reconnect automatically.
|
|
* @param checkFunction
|
|
*/
|
|
public constructor(
|
|
private readonly websocketUrl: string,
|
|
private readonly listener: (websocket: WebSocket, e: MessageEvent) => void,
|
|
private readonly reconnectOnCloseAfter: number = 1000,
|
|
) {
|
|
}
|
|
|
|
public run(): void {
|
|
const websocket = new WebSocket(this.websocketUrl);
|
|
websocket.onopen = () => {
|
|
console.debug('Websocket connected');
|
|
websocket.send(document.cookie);
|
|
};
|
|
websocket.onmessage = (e) => {
|
|
this.listener(websocket, e);
|
|
};
|
|
websocket.onerror = (e) => {
|
|
console.error('Websocket error', e);
|
|
};
|
|
websocket.onclose = (e) => {
|
|
console.debug('Websocket closed', e.code, e.reason);
|
|
|
|
if (this.reconnectOnCloseAfter >= 0) {
|
|
setTimeout(() => {
|
|
this.run();
|
|
}, this.reconnectOnCloseAfter);
|
|
}
|
|
};
|
|
}
|
|
}
|