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
JavaScript
;
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;