| /** | |
| * Get the WebSocket URL based on the environment | |
| * In production (Docker), it uses the current host | |
| * In development, it uses the configured URL or defaults to localhost:8000 | |
| */ | |
| export const getWebSocketUrl = (): string => { | |
| // Check if we have a configured WebSocket URL from environment | |
| const envWsUrl = import.meta.env.VITE_WS_URL; | |
| if (envWsUrl) { | |
| return envWsUrl; | |
| } | |
| // In production (when served from same origin), use relative WebSocket URL | |
| if (import.meta.env.PROD) { | |
| const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:'; | |
| const host = window.location.host; | |
| return `${protocol}//${host}/ws`; | |
| } | |
| // Development fallback | |
| return 'ws://localhost:8000/ws'; | |
| }; | |
| /** | |
| * Get the base API URL based on the environment | |
| * In production (Docker), it uses the current host with /api prefix | |
| * In development, it uses the configured URL or defaults to localhost:8000/api | |
| */ | |
| export const getApiBaseUrl = (): string => { | |
| // Check if we have a configured API URL from environment | |
| const envApiUrl = import.meta.env.VITE_API_URL; | |
| if (envApiUrl) { | |
| return envApiUrl; | |
| } | |
| // In production (when served from same origin), use relative API URL | |
| if (import.meta.env.PROD) { | |
| const protocol = window.location.protocol; | |
| const host = window.location.host; | |
| return `${protocol}//${host}/api`; | |
| } | |
| // Development fallback | |
| return 'http://localhost:8000/api'; | |
| }; | |