(sockets: WebSocket[])
| 438 | } |
| 439 | |
| 440 | async function closeSockets(sockets: WebSocket[]) { |
| 441 | await Promise.all( |
| 442 | sockets.map( |
| 443 | (socket) => |
| 444 | new Promise<void>((resolve) => { |
| 445 | if (socket.readyState === WebSocket.CLOSED) { |
| 446 | resolve(); |
| 447 | return; |
| 448 | } |
| 449 | const timeout = setTimeout(resolve, 500); |
| 450 | socket.addEventListener( |
| 451 | "close", |
| 452 | () => { |
| 453 | clearTimeout(timeout); |
| 454 | resolve(); |
| 455 | }, |
| 456 | { once: true }, |
| 457 | ); |
| 458 | socket.close(); |
| 459 | }), |
| 460 | ), |
| 461 | ); |
| 462 | } |
| 463 | |
| 464 | async function sample( |
| 465 | label: string, |