-
Notifications
You must be signed in to change notification settings - Fork 15.8k
Expand file tree
/
Copy pathconfig.ts
More file actions
23 lines (22 loc) · 1.24 KB
/
config.ts
File metadata and controls
23 lines (22 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
export const config = {
version: process.env.RCS_VERSION || "0.1.0",
port: parseInt(process.env.RCS_PORT || "3000", 10),
host: process.env.RCS_HOST || "0.0.0.0",
apiKeys: (process.env.RCS_API_KEYS || "").split(",").filter(Boolean),
baseUrl: process.env.RCS_BASE_URL || "",
pollTimeout: parseInt(process.env.RCS_POLL_TIMEOUT || "8", 10),
heartbeatInterval: parseInt(process.env.RCS_HEARTBEAT_INTERVAL || "20", 10),
jwtExpiresIn: parseInt(process.env.RCS_JWT_EXPIRES_IN || "3600", 10),
disconnectTimeout: parseInt(process.env.RCS_DISCONNECT_TIMEOUT || "300", 10),
/** Bun WebSocket idle timeout (seconds). Bun sends protocol-level pings after
* this many seconds of no received data. Must be shorter than any reverse
* proxy's idle timeout (nginx default 60s, Cloudflare 100s). Default 30s. */
wsIdleTimeout: parseInt(process.env.RCS_WS_IDLE_TIMEOUT || "30", 10),
/** Server→client keep_alive data-frame interval (seconds). Keeps reverse
* proxies from closing idle connections. Default 20s. */
wsKeepaliveInterval: parseInt(process.env.RCS_WS_KEEPALIVE_INTERVAL || "20", 10),
} as const;
export function getBaseUrl(): string {
const url = config.baseUrl || `http://localhost:${config.port}`;
return url.replace(/\/+$/, "");
}