MCPcopy Create free account
hub / github.com/EsperoTech/yaade / sendMessageToWebsocket

Function sendMessageToWebsocket

client/src/utils/websocket.ts:8–45  ·  view source on GitHub ↗
(ws: WebSocket, messageId: number, message: WSRequest)

Source from the content-addressed store, hash-verified

6};
7
8function sendMessageToWebsocket(ws: WebSocket, messageId: number, message: WSRequest) {
9 return new Promise((resolve, reject) => {
10 const msg = { ...message, metaData: { messageId: createMessageId(messageId) } };
11
12 const timeoutId = setTimeout(() => {
13 cleanup();
14 reject(new Error('Timeout waiting for response'));
15 }, 5000);
16
17 const messageHandler = (event: MessageEvent) => {
18 let res;
19 try {
20 res = JSON.parse(event.data);
21 } catch (e) {
22 console.error('messageHandler', e);
23 return;
24 }
25 if (msg?.type === `${msg.type}-result` && res?.err) {
26 cleanup();
27 reject(new Error(res.err || 'Write failed'));
28 } else if (
29 res?.type === `${msg.type}-result` &&
30 res?.result?.metaData?.messageId === msg.metaData?.messageId
31 ) {
32 cleanup();
33 resolve(res.result);
34 }
35 };
36
37 const cleanup = () => {
38 clearTimeout(timeoutId);
39 ws.removeEventListener('message', messageHandler);
40 };
41 ws.addEventListener('message', messageHandler);
42
43 ws.send(JSON.stringify(msg));
44 });
45}
46
47export { sendMessageToWebsocket };

Callers 3

serverConnectFunction · 0.90
serverDisconnectFunction · 0.90
serverWriteFunction · 0.90

Calls 3

createMessageIdFunction · 0.85
cleanupFunction · 0.85
setTimeoutFunction · 0.50

Tested by

no test coverage detected