





















@@ -60,18 +60,26 @@ async function createRealtimeServer(params?: {
6060return { url: `ws://127.0.0.1:${port}` };
6161}
626263+function createSignal() {
64+let resolve: (() => void) | undefined;
65+const promise = new Promise<void>((next) => {
66+resolve = next;
67+});
68+if (!resolve) {
69+throw new Error("Expected frame signal resolver to be initialized");
70+}
71+return { promise, resolve };
72+}
73+6374describe("createRealtimeTranscriptionWebSocketSession", () => {
6475it("flushes queued binary audio after an open-ready connection", async () => {
6576const frames: Buffer[] = [];
66-let resolveFrames!: () => void;
67-const framesReady = new Promise<void>((resolve) => {
68-resolveFrames = resolve;
69-});
77+const framesReady = createSignal();
7078const server = await createRealtimeServer({
7179onBinary: (payload) => {
7280frames.push(payload);
7381if (Buffer.concat(frames).toString() === "queuedafter") {
74-resolveFrames();
82+framesReady.resolve();
7583}
7684},
7785});
@@ -88,24 +96,21 @@ describe("createRealtimeTranscriptionWebSocketSession", () => {
8896session.sendAudio(Buffer.from("queued"));
8997await session.connect();
9098session.sendAudio(Buffer.from("after"));
91-await framesReady;
99+await framesReady.promise;
92100expect(Buffer.concat(frames).toString()).toBe("queuedafter");
93101expect(session.isConnected()).toBe(true);
94102session.close();
95103});
9610497105it("lets providers mark ready after a JSON handshake", async () => {
98106const frames: unknown[] = [];
99-let resolveFrames!: () => void;
100-const framesReady = new Promise<void>((resolve) => {
101-resolveFrames = resolve;
102-});
107+const framesReady = createSignal();
103108const server = await createRealtimeServer({
104109initialEvent: { type: "session.created" },
105110onText: (payload) => {
106111frames.push(payload);
107112if (frames.length === 2) {
108-resolveFrames();
113+framesReady.resolve();
109114}
110115},
111116});
@@ -126,7 +131,7 @@ describe("createRealtimeTranscriptionWebSocketSession", () => {
126131127132session.sendAudio(Buffer.from("queued"));
128133await session.connect();
129-await framesReady;
134+await framesReady.promise;
130135expect(frames).toEqual([
131136{ type: "session.update" },
132137{ type: "input_audio.append", audio: Buffer.from("queued").toString("base64") },
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。