mcard-js
Version:
MCard - Content-addressable storage with cryptographic hashing, handle resolution, and vector search for Node.js and browsers
47 lines • 1.47 kB
JavaScript
export class WebSocketClient {
ws = null;
url;
messageHandler = null;
reconnectInterval = 3000;
constructor(url) {
this.url = url;
}
connect() {
console.log(`[BrowserPTR] Connecting to ${this.url}`);
this.ws = new WebSocket(this.url);
this.ws.onopen = () => {
console.log('[BrowserPTR] WebSocket connected');
};
this.ws.onmessage = (event) => {
try {
const data = JSON.parse(event.data);
if (this.messageHandler) {
this.messageHandler(data);
}
}
catch (e) {
console.error('[BrowserPTR] Failed to parse message:', e);
}
};
this.ws.onclose = () => {
console.log('[BrowserPTR] WebSocket closed. Reconnecting...');
this.ws = null;
setTimeout(() => this.connect(), this.reconnectInterval);
};
this.ws.onerror = (error) => {
console.error('[BrowserPTR] WebSocket error:', error);
};
}
setMessageHandler(handler) {
this.messageHandler = handler;
}
send(data) {
if (this.ws && this.ws.readyState === WebSocket.OPEN) {
this.ws.send(JSON.stringify(data));
}
else {
console.warn('[BrowserPTR] WebSocket not ready. Message dropped:', data);
}
}
}
//# sourceMappingURL=WebSocketClient.js.map