UNPKG

etsdk-js

Version:

Client-side to Tobii Pro SDK

69 lines (67 loc) 1.97 kB
// src/TobiiClient.ts import WebSocket from "isomorphic-ws"; import jsLogger from "js-logger"; // src/utils.ts function waitForSocketState(socket, state) { return new Promise(function(resolve) { setTimeout(function() { if (socket.readyState === state) { resolve(true); } else if (socket.readyState === socket.CLOSED && state === socket.OPEN) { resolve(false); } else { waitForSocketState(socket, state).then(resolve); } }); }); } // src/TobiiClient.ts jsLogger.useDefaults(); var tobiiLogger = jsLogger.get("tobiiprosdk"); var TobiiClient = class { port; host = "http://localhost"; wsHost = "ws://localhost"; _activeWSConnections = {}; constructor(port = 9999, host = "http://localhost", wsHost = "ws://localhost") { this.port = port; this.host = host; this.wsHost = wsHost; } async ping() { const response = await fetch(`${this.host}:${this.port}/api/ping`); const data = await response.json(); return data; } async getEyeTrackers() { const response = await fetch(`${this.host}:${this.port}/api/find`); const data = await response.json(); return data; } async connectToEyeTracker(serial_number) { const ws = await this._createWebSocketConnection(serial_number); this._activeWSConnections[serial_number] = ws; return ws; } async disconnectFromEyeTracker(serial_number) { const ws = this._activeWSConnections[serial_number]; if (ws) { ws.close(); delete this._activeWSConnections[serial_number]; } } async clearAllActiveConnections() { for (const serial_number in this._activeWSConnections) { this.disconnectFromEyeTracker(serial_number); } } async _createWebSocketConnection(url_params) { const ws = new WebSocket(`${this.wsHost}:${this.port}/ws/${url_params}`); await waitForSocketState(ws, ws.OPEN); return ws; } }; export { TobiiClient }; //# sourceMappingURL=index.mjs.map