(args: { url?: string; onMessage: unknown })
| 7341 | } |
| 7342 | |
| 7343 | async function connectRealSocket(args: { url?: string; onMessage: unknown }) { |
| 7344 | const wsId = nextSocketId++; |
| 7345 | const ws = new WebSocket(args.url ?? DEFAULT_RELAY_WS_URL); |
| 7346 | const handler = resolveHandler(args.onMessage); |
| 7347 | |
| 7348 | realSockets.set(wsId, ws); |
| 7349 | ws.addEventListener("message", (event) => { |
| 7350 | handler({ |
| 7351 | type: "Text", |
| 7352 | data: event.data, |
| 7353 | }); |
| 7354 | }); |
| 7355 | ws.addEventListener("close", () => { |
| 7356 | sendWsClose(handler); |
| 7357 | realSockets.delete(wsId); |
| 7358 | }); |
| 7359 | ws.addEventListener("error", () => { |
| 7360 | handler({ |
| 7361 | type: "Error", |
| 7362 | }); |
| 7363 | }); |
| 7364 | |
| 7365 | return await new Promise<number>((resolve) => { |
| 7366 | ws.addEventListener("open", () => resolve(wsId), { once: true }); |
| 7367 | ws.addEventListener("error", () => resolve(wsId), { once: true }); |
| 7368 | }); |
| 7369 | } |
| 7370 | |
| 7371 | async function connectMockSocket(args: { onMessage: unknown }) { |
| 7372 | if (mockWebsocketSendMutexWedged) { |
no test coverage detected