ITADN

NapiServer times out in 30 seconds

#219Openguest271314 创建于 2026-03-24
G
guest271314commented
(Node.js WebTransport via NAPI-RS) Steps to reproduce: `moq-web-transport-node-server-client-test.js` ``` import * as moqWebTransportNode from "@moq/web-transport"; // bun build --target=node ./node_modules/@moq/web-transport/src/index.ts --outdir=moq-wt-node-bundle // import * as moqWebTransportNode from "./moq-wt-node-bundle/index.js"; import { readFileSync } from "node:fs"; const cert = readFileSync("./cert.pem"); const key = readFileSync("./key.pem"); const encoder = new TextEncoder(); let now; // moqWebTransportNode.install(); globalThis.WebTransport = moqWebTransportNode.default; const server = moqWebTransportNode.NapiServer.bind("127.0.0.1:8080", cert, key) .accept().then( async (napiRequest) => { // napiRequest.url is a Promise? Why? // console.log(await napiRequest.url); const napiSession = await napiRequest.ok(); return new WebTransport(napiSession); }, ); server.then(async (clientSession) => { await clientSession.ready; const { readable: serverReadable, writable: serverWritable } = clientSession.datagrams; serverReadable.pipeThrough(new TextDecoderStream()) .pipeThrough( new TransformStream({ transform(value, controller) { console.log(`Received value from WebTransport client: ${value}`); controller.enqueue(value.toUpperCase()); }, }), ).pipeThrough(new TextEncoderStream()).pipeTo(serverWritable); }); const client = new WebTransport("https://127.0.0.1:8080", { serverCertificateDisableVerify: true, }); await client.ready; client.closed.then(({ closeCode, reason }) => { console.log({ closeCode, reason }); // Server (?) times out and exits in 30 seconds? console.log((performance.now() - now) / 1000); }).catch((e) => { console.log(e.stack); console.trace(); }); const { readable: clientReadable, writable: clientWritable } = client.datagrams; const clientWriter = clientWritable.getWriter(); clientReadable.pipeThrough(new TextDecoderStream()).pipeTo( new WritableStream({ write(value) { console.log(`Received value from WebTransport server: ${value}`); now = performance.now(); }, }), ).catch((e) => { console.log(e.stack); console.trace(); }); clientWriter.write(encoder.encode("test")); ``` ``` $ bun moq-web-transport-node-server-client-test.js Received value from WebTransport client: test Received value from WebTransport server: TEST { closeCode: 0, reason: "connection error: timed out", } 30.018914800999998 ```
1 条评论