MCPcopy Index your code
hub / github.com/coder/mux / closeWebSocket

Function closeWebSocket

src/node/acp/serverConnection.ts:347–386  ·  view source on GitHub ↗
(websocket: WebSocket)

Source from the content-addressed store, hash-verified

345}
346
347async function closeWebSocket(websocket: WebSocket): Promise<void> {
348 if (websocket.readyState === WebSocket.CLOSED) {
349 return;
350 }
351
352 await new Promise<void>((resolve) => {
353 let finished = false;
354
355 const finish = () => {
356 if (finished) {
357 return;
358 }
359
360 finished = true;
361 clearTimeout(timeout);
362 websocket.off("close", finish);
363 websocket.off("error", finish);
364 resolve();
365 };
366
367 const timeout = setTimeout(() => {
368 try {
369 websocket.terminate();
370 } catch {
371 // Best effort - socket may already be closing.
372 }
373
374 finish();
375 }, 1000);
376
377 websocket.once("close", finish);
378 websocket.once("error", finish);
379
380 try {
381 websocket.close();
382 } catch {
383 finish();
384 }
385 });
386}

Callers 2

connectToExistingServerFunction · 0.70
connectToInProcessServerFunction · 0.70

Calls 3

finishFunction · 0.70
terminateMethod · 0.65
closeMethod · 0.65

Tested by

no test coverage detected