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

Function serverConnect

client/src/components/websocketPanel/WebsocketHandler.tsx:86–143  ·  view source on GitHub ↗
(request: CurrentWebsocketRequest)

Source from the content-addressed store, hash-verified

84 }
85
86 async function serverConnect(request: CurrentWebsocketRequest): Promise<string> {
87 return new Promise((resolve, reject) => {
88 try {
89 const websocket = new WebSocket('/api/ws');
90 websocket.onopen = () => {
91 sendMessageToWebsocket(websocket, currentRequest.id, {
92 type: 'ws-connect',
93 request,
94 })
95 .then((msg: any) => {
96 if (msg.status === 'error') {
97 reject(msg.err);
98 } else {
99 ws.current = websocket;
100 resolve(msg.wsId);
101 }
102 })
103 .catch(reject);
104 };
105 websocket.onmessage = (event) => {
106 const msg = JSON.parse(event.data);
107 if (!msg) {
108 console.error('server message', msg);
109 return;
110 }
111 if (msg.type === 'ws-read') {
112 if (!msg || msg?.type !== 'ws-read' || msg.result?.wsId !== wsId.current) {
113 return;
114 }
115 dispatchCurrentRequest({
116 type: CurrentRequestActionType.ADD_WEBSOCKET_RESPONSE_MESSAGE,
117 message: {
118 message: msg.result.message,
119 date: Date.now(),
120 type: 'incoming',
121 },
122 });
123 } else if (msg.type === 'ws-error') {
124 ws.current?.close();
125 wsId.current = null;
126 setConnectionStatus('disconnected');
127 errorToast('WebSocket error: ' + msg.result.error, toast);
128 } else if (msg.type === 'ws-close') {
129 ws.current?.close();
130 wsId.current = null;
131 setConnectionStatus('disconnected');
132 errorToast('WebSocket closed unexpectedly', toast);
133 }
134 };
135 websocket.onerror = (err) => {
136 ws.current?.close();
137 reject(err);
138 };
139 } catch (err) {
140 reject(err);
141 }
142 });
143 }

Callers 1

handleConnectFunction · 0.85

Calls 3

sendMessageToWebsocketFunction · 0.90
errorToastFunction · 0.90
nowMethod · 0.45

Tested by

no test coverage detected