MCPcopy Create free account
hub / github.com/Effect-TS/effect / connectWebSocket

Function connectWebSocket

packages/platform/deno/test/DenoHttpServer.test.ts:715–735  ·  view source on GitHub ↗
(url: string, onOpen: (socket: WebSocket) => void, messageCount: number)

Source from the content-addressed store, hash-verified

713 )
714
715const connectWebSocket = (url: string, onOpen: (socket: WebSocket) => void, messageCount: number) =>
716 Effect.acquireUseRelease(
717 openWebSocket(url),
718 (socket) =>
719 Effect.gen(function*() {
720 const messages: Array<string> = []
721 const fiber = yield* Effect.callback<void, Error>((resume) => {
722 socket.addEventListener("message", (event) => {
723 messages.push(event.data)
724 if (messages.length === messageCount) resume(Effect.void)
725 })
726 socket.addEventListener("error", () => resume(Effect.fail(new Error("WebSocket connection failed"))), {
727 once: true
728 })
729 onOpen(socket)
730 }).pipe(Effect.forkChild)
731 yield* Fiber.join(fiber)
732 return messages
733 }),
734 (socket) => Effect.sync(() => socket.close())
735 )

Callers 1

Calls 9

openWebSocketFunction · 0.85
pushMethod · 0.80
joinMethod · 0.80
pipeMethod · 0.65
addEventListenerMethod · 0.65
closeMethod · 0.65
resumeFunction · 0.50
failMethod · 0.45
syncMethod · 0.45

Tested by

no test coverage detected