From 87387a8a83ea6f60a6527c3ee87b3f116d5a4873 Mon Sep 17 00:00:00 2001 From: Akash Santra Date: Mon, 2 Mar 2026 17:58:32 +0530 Subject: [PATCH] Fix mobile socket connection by enabling polling fallback p2 --- backend/src/lib/socket.js | 5 +++++ frontend/src/store/useAuthStore.js | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/backend/src/lib/socket.js b/backend/src/lib/socket.js index 76d3335..36943f0 100644 --- a/backend/src/lib/socket.js +++ b/backend/src/lib/socket.js @@ -8,11 +8,16 @@ import User from "../models/user.model.js"; const app = express(); const server = http.createServer(app); +server.keepAliveTimeout = 120000; +server.headersTimeout = 120000; + const io = new Server(server, { cors: { origin: ["https://chat-app-sooty-mu.vercel.app", "http://localhost:5173"], credentials: true, }, + pingTimeout: 60000, + pingInterval: 25000, }); const userSocketMap = {}; diff --git a/frontend/src/store/useAuthStore.js b/frontend/src/store/useAuthStore.js index 5627b46..6e185ee 100644 --- a/frontend/src/store/useAuthStore.js +++ b/frontend/src/store/useAuthStore.js @@ -175,10 +175,26 @@ export const useAuthStore = create((set, get) => ({ // reconnection: true, // }); + // const newSocket = io(BASE_URL, { + // auth: { userId: authUser._id }, + // withCredentials: true, + // reconnection: true, + // }); + const newSocket = io(BASE_URL, { auth: { userId: authUser._id }, - withCredentials: true, + + // Let socket decide best transport (polling → websocket upgrade) + transports: ["polling", "websocket"], + + // Stability settings reconnection: true, + reconnectionAttempts: Infinity, + reconnectionDelay: 1000, + reconnectionDelayMax: 5000, + + // Important for slower mobile TLS handshakes + timeout: 20000, }); //Attach ALL listeners BEFORE doing anything else