openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
39 lines (38 loc) • 1.13 kB
JavaScript
import { t as OpenAIQuicksilverSocketRuntime } from "../../realtime-quicksilver-socket.runtime-B3_Zwc91.mjs";
import { parentPort, workerData } from "node:worker_threads";
import WebSocket$1 from "ws";
//#region extensions/openai/realtime-quicksilver-socket.worker.ts
const port = parentPort;
if (!port) throw new Error("GPT-Live socket runtime requires a worker thread");
const data = workerData;
function post(message) {
port.postMessage(message, []);
}
try {
const socket = new WebSocket$1(data.url, {
headers: data.options.headers,
maxPayload: data.options.maxPayload
});
let closeTimer;
const runtime = new OpenAIQuicksilverSocketRuntime(socket, data, post, () => {
if (closeTimer) clearTimeout(closeTimer);
port.close();
}, () => socket.bufferedAmount);
port.on("message", (command) => {
if (command.type === "close" && !closeTimer) {
closeTimer = setTimeout(() => socket.terminate(), 1e3);
closeTimer.unref();
}
runtime.command(command);
});
} catch {
post({ type: "error" });
post({
type: "close",
code: 1006,
reason: "media startup failed"
});
port.close();
}
//#endregion
export {};