

























@@ -589,6 +589,7 @@ describe("MediaStreamHandler security hardening", () => {
589589const sttReady = createDeferred();
590590const sttConnectStarted = createDeferred();
591591const transcriptionReady = createDeferred();
592+const audioReceived = createDeferred();
592593const receivedAudio: Buffer[] = [];
593594let onConnectCalls = 0;
594595let onTranscriptionReadyCalls = 0;
@@ -600,6 +601,7 @@ describe("MediaStreamHandler security hardening", () => {
600601},
601602sendAudio: (audio) => {
602603receivedAudio.push(Buffer.from(audio));
604+audioReceived.resolve();
603605},
604606close: () => {},
605607isConnected: () => false,
@@ -623,9 +625,10 @@ describe("MediaStreamHandler security hardening", () => {
623625},
624626});
625627const server = await startWsServer(handler);
628+let ws: WebSocket | undefined;
626629627630try {
628-const ws = await connectWs(server.url);
631+ws = await connectWs(server.url);
629632ws.send(
630633JSON.stringify({
631634event: "start",
@@ -642,7 +645,7 @@ describe("MediaStreamHandler security hardening", () => {
642645media: { payload: Buffer.from("early").toString("base64") },
643646}),
644647);
645-await flush();
648+await withTimeout(audioReceived.promise);
646649647650expect(Buffer.concat(receivedAudio).toString()).toBe("early");
648651expect(onConnectCalls).toBe(1);
@@ -652,10 +655,16 @@ describe("MediaStreamHandler security hardening", () => {
652655await withTimeout(transcriptionReady.promise);
653656expect(onConnectCalls).toBe(1);
654657expect(onTranscriptionReadyCalls).toBe(1);
655-656-ws.close();
657-await waitForClose(ws);
658658} finally {
659+sttReady.resolve();
660+if (ws) {
661+if (ws.readyState === WebSocket.OPEN) {
662+ws.close();
663+}
664+if (ws.readyState !== WebSocket.CLOSED) {
665+await waitForClose(ws).catch(() => {});
666+}
667+}
659668await server.close();
660669}
661670});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。