codexmobile-relay / scripts /relay-mac-client-backpressure.mjs
Codex
deploy: CodexMobile Relay
90f0300
Raw
History Blame Contribute Delete
673 Bytes
import { DEFAULT_RELAY_WS_BUFFERED_BYTES } from '../server/relay-protocol.js';
const WS_BUFFER_CHECK_INTERVAL_MS = 10;
const WS_BUFFER_WAIT_TIMEOUT_MS = 30000;
export async function waitForSocketBackpressure(
socket,
{
maxBufferedBytes = DEFAULT_RELAY_WS_BUFFERED_BYTES,
errorMessage = 'relay_realtime_backpressure_timeout'
} = {}
) {
const startedAt = Date.now();
while ((socket?.bufferedAmount || 0) > maxBufferedBytes) {
if (Date.now() - startedAt > WS_BUFFER_WAIT_TIMEOUT_MS) {
throw Object.assign(new Error(errorMessage), { status: 502 });
}
await new Promise((resolve) => setTimeout(resolve, WS_BUFFER_CHECK_INTERVAL_MS));
}
}