From d0edccf15d0caa06205c4cbfc29d8100c4538f30 Mon Sep 17 00:00:00 2001 From: Khairul Hidayat Date: Tue, 15 Sep 2026 18:26:35 +0800 Subject: [PATCH] feat: add ping to prevent ws timeout --- src/server/main.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/server/main.ts b/src/server/main.ts index d0eed26..03aecb0 100644 --- a/src/server/main.ts +++ b/src/server/main.ts @@ -32,8 +32,6 @@ function getWhatsApp(): WebSocket | undefined { if (ws.readyState === WebSocket.OPEN) { return ws; } - - bridgeSockets.delete(ws); } return undefined; @@ -134,6 +132,14 @@ wss.on("connection", (ws) => { const isBridge = !url.searchParams.get("client") || url.searchParams.get("bridge") === "1"; + const ping = setInterval(() => { + ws.send(JSON.stringify({ type: "ping" })); + }, 10_000); + + const clean = () => { + clearInterval(ping); + }; + if (isBridge) { bridgeSockets.add(ws); console.log("[WS] WhatsApp bridge attached"); @@ -143,11 +149,13 @@ wss.on("connection", (ws) => { }); ws.on("close", () => { + clean(); bridgeSockets.delete(ws); console.log("[WS] WhatsApp bridge disconnected"); }); ws.on("error", () => { + clean(); bridgeSockets.delete(ws); }); return; @@ -223,11 +231,13 @@ wss.on("connection", (ws) => { }); ws.on("close", () => { + clean(); clientSockets.delete(ws); console.log("[WS] external client disconnected"); }); ws.on("error", () => { + clean(); clientSockets.delete(ws); }); });