* fix(gateway): increase WebSocket max payload to 5 MB for image uploads The 512 KB limit was too small for base64-encoded images — a 400 KB image becomes ~532 KB after encoding, exceeding the limit and closing the connection with code 1006. Bump MAX_PAYLOAD_BYTES to 5 MB and MAX_BUFFERED_BYTES to 8 MB to support standard image uploads via webchat. Closes #14400 * fix: align gateway WS limits with 5MB image uploads (#14486) (thanks @0xRaini) * docs: fix changelog conflict for #14486 --------- Co-authored-by: 0xRaini <0xRaini@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
export const MAX_PAYLOAD_BYTES = 8 * 1024 * 1024; // cap incoming frame size (~8 MiB; fits ~5,000,000 decoded bytes as base64 + JSON overhead)
|
|
export const MAX_BUFFERED_BYTES = 16 * 1024 * 1024; // per-connection send buffer limit (2x max payload)
|
|
|
|
const DEFAULT_MAX_CHAT_HISTORY_MESSAGES_BYTES = 6 * 1024 * 1024; // keep history responses comfortably under client WS limits
|
|
let maxChatHistoryMessagesBytes = DEFAULT_MAX_CHAT_HISTORY_MESSAGES_BYTES;
|
|
|
|
export const getMaxChatHistoryMessagesBytes = () => maxChatHistoryMessagesBytes;
|
|
|
|
export const __setMaxChatHistoryMessagesBytesForTest = (value?: number) => {
|
|
if (!process.env.VITEST && process.env.NODE_ENV !== "test") {
|
|
return;
|
|
}
|
|
if (value === undefined) {
|
|
maxChatHistoryMessagesBytes = DEFAULT_MAX_CHAT_HISTORY_MESSAGES_BYTES;
|
|
return;
|
|
}
|
|
if (Number.isFinite(value) && value > 0) {
|
|
maxChatHistoryMessagesBytes = value;
|
|
}
|
|
};
|
|
export const DEFAULT_HANDSHAKE_TIMEOUT_MS = 10_000;
|
|
export const getHandshakeTimeoutMs = () => {
|
|
if (process.env.VITEST && process.env.OPENCLAW_TEST_HANDSHAKE_TIMEOUT_MS) {
|
|
const parsed = Number(process.env.OPENCLAW_TEST_HANDSHAKE_TIMEOUT_MS);
|
|
if (Number.isFinite(parsed) && parsed > 0) {
|
|
return parsed;
|
|
}
|
|
}
|
|
return DEFAULT_HANDSHAKE_TIMEOUT_MS;
|
|
};
|
|
export const TICK_INTERVAL_MS = 30_000;
|
|
export const HEALTH_REFRESH_INTERVAL_MS = 60_000;
|
|
export const DEDUPE_TTL_MS = 5 * 60_000;
|
|
export const DEDUPE_MAX = 1000;
|