UNPKG

@qrvey/websocket-client

Version:

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

86 lines (84 loc) 2.23 kB
import { io } from 'socket.io-client'; // src/lib/client.ts var SOCKET_STATUS = /* @__PURE__ */ ((SOCKET_STATUS2) => { SOCKET_STATUS2["CONNECTED"] = "CONNECTED"; SOCKET_STATUS2["ACTIVE"] = "ACTIVE"; SOCKET_STATUS2["RECOVERED"] = "RECOVERED"; SOCKET_STATUS2["DISCONNECTED"] = "DISCONNECTED"; SOCKET_STATUS2["UNDEFINED"] = "UNDEFINED"; return SOCKET_STATUS2; })(SOCKET_STATUS || {}); var WebSocketClient = class { constructor(auth, { domain, isAutoPingPongEnable = true, ignoreClientId = false } = {}) { var _a, _b; const serverUrl = (_b = (_a = domain != null ? domain : process.env.PRIVATE_DOMAIN) != null ? _a : process.env.DOMAIN) != null ? _b : "http://localhost:3000/"; this.socket = io(serverUrl, { auth, path: "/websocket", query: { ignoreClientId } }); if (isAutoPingPongEnable) { const intervalTime = 6e4; 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 "DISCONNECTED" /* DISCONNECTED */; if (this.socket.connected) return "CONNECTED" /* CONNECTED */; if (this.socket.recovered) return "RECOVERED" /* RECOVERED */; if (this.socket.active) return "ACTIVE" /* ACTIVE */; return "UNDEFINED" /* UNDEFINED */; } connect() { this.socket.connect(); } disconnect() { this.socket.disconnect(); if (this.intervalPingPongId) { clearInterval(this.intervalPingPongId); } } }; export { SOCKET_STATUS, WebSocketClient }; //# sourceMappingURL=out.js.map //# sourceMappingURL=index.mjs.map