|
2 | 2 |
|
3 | 3 | import { bench } from './_util/runner.js' |
4 | 4 | import { formatBytes } from './_util/index.js' |
5 | | -import * as undici from '../index.js' |
| 5 | +import { WebSocket, WebSocketStream } from '../index.js' |
6 | 6 | import { WebSocket as WsWebSocket } from 'ws' |
7 | 7 |
|
8 | | -const { WebSocket } = undici |
9 | | - |
10 | 8 | /** |
11 | 9 | * @type {Record<string, { fn: (ws: any, binary: string | Uint8Array) => import('./_util/runner.js').BenchMarkHandler; connect: (url: string) => Promise<any>; binaries: (string | Uint8Array)[] }>} |
12 | 10 | */ |
@@ -74,35 +72,35 @@ experiments['undici'] = { |
74 | 72 | } |
75 | 73 |
|
76 | 74 | // https://github.com/nodejs/undici/pull/3560 |
77 | | -// if (typeof WebSocketStream === 'function') { |
78 | | -// experiments['undici - stream'] = { |
79 | | -// fn: (ws, binary) => { |
80 | | -// /** @type {ReadableStreamDefaultReader<string | Uint8Array>} */ |
81 | | -// const reader = ws.reader |
82 | | -// /** @type {WritableStreamDefaultWriter<string | BufferSource>} */ |
83 | | -// const writer = ws.writer |
84 | | - |
85 | | -// return async (ev) => { |
86 | | -// ev.start() |
87 | | -// await writer.write(binary) |
88 | | -// await reader.read() |
89 | | -// ev.end() |
90 | | -// } |
91 | | -// }, |
92 | | - |
93 | | -// connect: async (url) => { |
94 | | -// const ws = new WebSocketStream(url) |
95 | | - |
96 | | -// const { readable, writable } = await ws.opened |
97 | | -// const reader = readable.getReader() |
98 | | -// const writer = writable.getWriter() |
99 | | - |
100 | | -// return { reader, writer, close: () => ws.close() } |
101 | | -// }, |
102 | | - |
103 | | -// binaries |
104 | | -// } |
105 | | -// } |
| 75 | +if (typeof WebSocketStream === 'function') { |
| 76 | + experiments['undici - stream'] = { |
| 77 | + fn: (ws, binary) => { |
| 78 | + /** @type {ReadableStreamDefaultReader<string | Uint8Array>} */ |
| 79 | + const reader = ws.reader |
| 80 | + /** @type {WritableStreamDefaultWriter<string | BufferSource>} */ |
| 81 | + const writer = ws.writer |
| 82 | + |
| 83 | + return async (ev) => { |
| 84 | + ev.start() |
| 85 | + await writer.write(binary) |
| 86 | + await reader.read() |
| 87 | + ev.end() |
| 88 | + } |
| 89 | + }, |
| 90 | + |
| 91 | + connect: async (url) => { |
| 92 | + const ws = new WebSocketStream(url) |
| 93 | + |
| 94 | + const { readable, writable } = await ws.opened |
| 95 | + const reader = readable.getReader() |
| 96 | + const writer = writable.getWriter() |
| 97 | + |
| 98 | + return { reader, writer, close: () => ws.close() } |
| 99 | + }, |
| 100 | + |
| 101 | + binaries |
| 102 | + } |
| 103 | +} |
106 | 104 |
|
107 | 105 | experiments['ws'] = { |
108 | 106 | fn: (ws, binary) => { |
|
0 commit comments