@swan-admin/swan-ai-measurements
Version:
provides ai measurement suggestion
64 lines (63 loc) • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const socket_io_client_1 = require("socket.io-client");
const constants_js_1 = require("./constants.js");
const utils_js_1 = require("./utils.js");
const enum_js_1 = require("./enum.js");
class PoseDetection {
#socketRef = null;
#accessKey;
#urlType;
#token;
constructor(accessKey, urlType = enum_js_1.URLType.PROD, token) {
this.#accessKey = accessKey;
this.#urlType = urlType;
this.#token = token;
}
connect() {
return new Promise((resolve, reject) => {
this.#socketRef = (0, socket_io_client_1.io)((0, utils_js_1.getUrl)({ urlName: constants_js_1.APP_POSE_DETECTION_WEBSOCKET_URL, urlType: this.#urlType }), {
extraHeaders: {
...(this.#accessKey ? { "X-Api-Key": this.#accessKey } : {}),
...(this.#token ? { Authorization: `Bearer ${this.#token}` } : {}),
},
});
this.#socketRef.on("connect", () => {
const socketId = this.#socketRef?.id;
if (socketId) {
resolve(socketId);
}
else {
reject("Failed to obtain socket ID.");
}
});
this.#socketRef.on("connect_error", (err) => {
reject(err);
});
});
}
videoEmit({ image, scanId }) {
if (!this.#socketRef) {
throw new Error("Socket is not connected");
}
this.#socketRef.emit("video", {
image,
user_unique_key: scanId,
});
}
disconnect() {
this.#socketRef?.disconnect();
}
poseStatus(callBack) {
if (!this.#socketRef) {
throw new Error("Socket is not connected");
}
this.#socketRef.on("pose_status", (data) => {
callBack?.(data);
});
}
connected() {
return !!this.#socketRef?.connected;
}
}
exports.default = PoseDetection;