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); }); });