X-Git-Url: https://git.r.bdr.sh/rbdr/forum/blobdiff_plain/862a5f9cdbbda522c608ea63c1e296e81f44de10..bd8e98d7e24c4dbaee7db6ec7955f7c2f6d396a6:/app/socket_coordinator.js diff --git a/app/socket_coordinator.js b/app/socket_coordinator.js deleted file mode 100644 index f8fb525..0000000 --- a/app/socket_coordinator.js +++ /dev/null @@ -1,63 +0,0 @@ -import EventEmitter from 'eventemitter3'; -import { socketServer } from './config/config'; - -const internals = { - - kReconnectInterval: 3000, // How often we attempt to reconnect - - eventEmitter: new EventEmitter(), // internal event emitter - socket: null, // stores the socket connection - retry: null, // stores the retry operation - - connect() { - - console.debug('Connecting socket.'); - internals.socket = new WebSocket(socketServer); - - internals.socket.addEventListener('message', internals.onMessage); - internals.socket.addEventListener('error', internals.onError); - internals.socket.addEventListener('close', internals.onClose); - }, - - // Handles socket errors. - - onError(event) { - - console.error('Socket error. Closing connection'); - internals.socket.close(); - }, - - // Handles socket errors. - - onClose(event) { - - console.debug(`Connection closed: ${event.reason || 'Unknown reason'}. Retrying in ${internals.kReconnectInterval}ms`); - - internals.retry && clearTimeout(internals.retry); - internals.retry = setTimeout(() => { - - console.debug('Reconnecting socket.'); - internals.retry = null; - internals.connect(); - }, internals.kReconnectInterval); - }, - - // Forwards events from the socket to our internal event emitter. - - onMessage(event) { - - internals.eventEmitter.emit('message', event); - } -}; - -export const onMessage = function (listener) { - - if (!internals.socket) { - internals.connect(); - } - - internals.eventEmitter.on('message', (message) => { - - listener(JSON.parse(message.data)); - }); -};