UNPKG

@e-group/utils

Version:

eGroup team utils that share across projects.

67 lines (56 loc) 1.45 kB
/** * To handle global websocket connections. * * Example . * ```javascript * const mySocket = WebsocketRegister.register("mySocket", "websocket"); * mySocket.onopen = onopen * mySocket.onmessage = onmessage * mySocket.onclose = WebsocketRegister.unregister('mySocket'); * ``` */ class WebsocketRegister { constructor() { this.websockets = {}; } _checkNameIsExist(name) { if (typeof this.websockets[name] === 'undefined') { return false; } return true; } register(name, url) { if (!this._checkNameIsExist(name)) { this.websockets[name] = new WebSocket(url); console.log("".concat(name, " register success.")); return this.websockets[name]; } console.warn("".concat(name, " is registered.")); } unregister(name) { if (this._checkNameIsExist(name)) { this.websockets[name] = undefined; console.log("".concat(name, " unregister success.")); } else { console.warn("".concat(name, " is not registered.")); } } unregisterAll() { for (const key in this.websockets) { if (this.websockets.hasOwnProperty(key)) { const element = this.websockets[key]; if (element) { element.close(); } } } } get(name) { if (this._checkNameIsExist(name)) { return this.websockets[name]; } return undefined; } } const Instance = new WebsocketRegister(); export default Instance;