From a23d774ca4b403ed9a4650d3d63552a070ce6d93 Mon Sep 17 00:00:00 2001 From: iDefineHD Date: Sun, 11 Jan 2026 02:10:55 +0000 Subject: [PATCH] Fix WebSocket fallback URL and add debug logging - Fixed fallback to use api.turbotrades.dev instead of window.location.host - Added console logging to debug WebSocket URL resolution - Simplified fallback logic - always use API URL domain - This fixes ws.turbotrades.dev connection errors --- frontend/src/stores/websocket.js | 38 +++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/frontend/src/stores/websocket.js b/frontend/src/stores/websocket.js index 320850d..39ff82c 100644 --- a/frontend/src/stores/websocket.js +++ b/frontend/src/stores/websocket.js @@ -31,35 +31,47 @@ export const useWebSocketStore = defineStore("websocket", () => { // Helper functions const getWebSocketUrl = async () => { + console.log("[WebSocket] Getting WebSocket URL..."); + // Use environment variable or fallback if (import.meta.env.VITE_WS_URL) { + console.log( + "[WebSocket] Using VITE_WS_URL:", + import.meta.env.VITE_WS_URL + ); return import.meta.env.VITE_WS_URL; } // Try to fetch from backend config API try { const apiUrl = import.meta.env.VITE_API_URL || "http://localhost:3000"; + console.log( + "[WebSocket] Fetching config from:", + `${apiUrl}/api/config/public` + ); const response = await fetch(`${apiUrl}/api/config/public`); const data = await response.json(); if (data.success && data.config.websocket?.url) { + console.log( + "[WebSocket] Got URL from backend:", + data.config.websocket.url + ); return data.config.websocket.url; } + console.warn("[WebSocket] Backend config missing websocket URL"); } catch (error) { - console.warn("Failed to fetch WebSocket URL from config:", error); + console.warn( + "[WebSocket] Failed to fetch WebSocket URL from config:", + error + ); } - // In production, use main API domain with /ws path - if (import.meta.env.PROD) { - const apiUrl = - import.meta.env.VITE_API_URL || "https://api.turbotrades.dev"; - // Convert http(s):// to ws(s):// - return apiUrl.replace(/^http/, "ws") + "/ws"; - } - - // In development, use current host with ws path (for proxy) - const protocol = window.location.protocol === "https:" ? "wss:" : "ws:"; - const host = window.location.host; - return `${protocol}//${host}/ws`; + // Fallback: use API domain with /ws path + const apiUrl = + import.meta.env.VITE_API_URL || "https://api.turbotrades.dev"; + const fallbackUrl = apiUrl.replace(/^http/, "ws") + "/ws"; + console.log("[WebSocket] Using fallback URL:", fallbackUrl); + return fallbackUrl; }; const clearHeartbeat = () => {