UNPKG

openraas

Version:

Open Robot-as-a-Service Protocol - A comprehensive TypeScript library for building and consuming RaaS applications with X402 payment support on Solana

58 lines (57 loc) 1.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebSocketAdapter = void 0; const ws_1 = __importDefault(require("ws")); const events_1 = require("events"); class WebSocketAdapter extends events_1.EventEmitter { constructor() { super(...arguments); this.ws = null; } async connect(url, options) { return new Promise((resolve, reject) => { this.ws = new ws_1.default(url, options); this.ws.on('open', () => { this.emit('open'); resolve(); }); this.ws.on('message', (data) => { // Handle both string and buffer let parsedData; try { parsedData = JSON.parse(data.toString()); } catch (e) { parsedData = data; } this.emit('message', parsedData); }); this.ws.on('close', () => { this.emit('close'); }); this.ws.on('error', (err) => { this.emit('error', err); reject(err); }); }); } send(message) { if (this.ws && this.ws.readyState === ws_1.default.OPEN) { const data = typeof message === 'string' ? message : JSON.stringify(message); this.ws.send(data); } else { throw new Error('WebSocket is not open'); } } close() { if (this.ws) { this.ws.close(); this.ws = null; } } } exports.WebSocketAdapter = WebSocketAdapter;