@qrvey/websocket-client
Version:

86 lines (84 loc) • 2.23 kB
JavaScript
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