UNPKG

@qrvey/websocket-client

Version:

![install size](https://packagephobia.com/badge?p=@qrvey/websocket-client)

75 lines 2.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebSocketClient = exports.SOCKET_STATUS = void 0; const socket_io_client_1 = require("socket.io-client"); var SOCKET_STATUS; (function (SOCKET_STATUS) { SOCKET_STATUS["CONNECTED"] = "CONNECTED"; SOCKET_STATUS["ACTIVE"] = "ACTIVE"; SOCKET_STATUS["RECOVERED"] = "RECOVERED"; SOCKET_STATUS["DISCONNECTED"] = "DISCONNECTED"; SOCKET_STATUS["UNDEFINED"] = "UNDEFINED"; })(SOCKET_STATUS || (exports.SOCKET_STATUS = SOCKET_STATUS = {})); class WebSocketClient { constructor(auth, // Options { domain, isAutoPingPongEnable = true, ignoreClientId = false, } = {}) { var _a, _b; const serverUrl = (_b = (_a = domain !== null && domain !== void 0 ? domain : process.env.PRIVATE_DOMAIN) !== null && _a !== void 0 ? _a : process.env.DOMAIN) !== null && _b !== void 0 ? _b : 'http://localhost:3000/'; this.socket = (0, socket_io_client_1.io)(serverUrl, { auth, path: '/websocket', query: { ignoreClientId, }, }); if (isAutoPingPongEnable) { const intervalTime = 60000; // 60000 ms = 1 minute; this.intervalPingPongId = setInterval(() => { this.publish({ eventName: 'ping', data: {}, }); }, intervalTime); } } publish({ eventName, data, isPublic = false, }) { this.socket.emit(eventName, { isPublic, data }); } publishAndDisconnect({ eventName, data, isPublic = false, }) { this.socket.emit(eventName, { isPublic, data }, () => { this.socket.disconnect(); }); } subscribe(eventName, callback) { this.socket.on(eventName, callback); return this; } onError(callback) { this.socket.on('connect_error', (error) => { return callback(error); }); } status() { if (this.socket.disconnected) return SOCKET_STATUS.DISCONNECTED; if (this.socket.connected) return SOCKET_STATUS.CONNECTED; if (this.socket.recovered) return SOCKET_STATUS.RECOVERED; if (this.socket.active) return SOCKET_STATUS.ACTIVE; return SOCKET_STATUS.UNDEFINED; } connect() { this.socket.connect(); } disconnect() { this.socket.disconnect(); if (this.intervalPingPongId) { clearInterval(this.intervalPingPongId); } } } exports.WebSocketClient = WebSocketClient; //# sourceMappingURL=client.js.map