Skip to main content
Glama
websocket.js1.8 kB
import { JSONRPCMessageSchema } from '../types.js'; const SUBPROTOCOL = 'mcp'; /** * Client transport for WebSocket: this will connect to a server over the WebSocket protocol. */ export class WebSocketClientTransport { constructor(url) { this._url = url; } start() { if (this._socket) { throw new Error('WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.'); } return new Promise((resolve, reject) => { this._socket = new WebSocket(this._url, SUBPROTOCOL); this._socket.onerror = event => { const error = 'error' in event ? event.error : new Error(`WebSocket error: ${JSON.stringify(event)}`); reject(error); this.onerror?.(error); }; this._socket.onopen = () => { resolve(); }; this._socket.onclose = () => { this.onclose?.(); }; this._socket.onmessage = (event) => { let message; try { message = JSONRPCMessageSchema.parse(JSON.parse(event.data)); } catch (error) { this.onerror?.(error); return; } this.onmessage?.(message); }; }); } async close() { this._socket?.close(); } send(message) { return new Promise((resolve, reject) => { if (!this._socket) { reject(new Error('Not connected')); return; } this._socket?.send(JSON.stringify(message)); resolve(); }); } } //# sourceMappingURL=websocket.js.map

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Valerio357/bet-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server