From 373a6355a66de11019c79fbf5bc5082035d7f385 Mon Sep 17 00:00:00 2001 From: Liam Date: Thu, 17 Oct 2024 18:01:34 +0100 Subject: [PATCH] make ws more reliable --- .../common/src/websocket/scoresaber-websocket.ts | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/projects/common/src/websocket/scoresaber-websocket.ts b/projects/common/src/websocket/scoresaber-websocket.ts index 189b5cd..f95b611 100644 --- a/projects/common/src/websocket/scoresaber-websocket.ts +++ b/projects/common/src/websocket/scoresaber-websocket.ts @@ -22,30 +22,23 @@ type ScoresaberSocket = { */ export function connectScoreSaberWebSocket({ onMessage, onScore }: ScoresaberSocket) { let websocket: WebSocket | null = null; - let heartbeatInterval: NodeJS.Timeout | null = null; // To store heartbeat interval ID function connectWs() { websocket = new WebSocket("wss://scoresaber.com/ws"); websocket.onopen = () => { console.log("Connected to the ScoreSaber WebSocket!"); - - // Start sending heartbeats - heartbeatInterval = setInterval(() => { - if (websocket && websocket.readyState === WebSocket.OPEN) { - websocket.send(JSON.stringify({ type: "heartbeat" })); // Send heartbeat message - console.log("Heartbeat sent"); - } - }, 30000); // Sends a heartbeat every 30 seconds }; websocket.onerror = error => { console.error("WebSocket Error:", error); + if (websocket) { + websocket.close(); // Close the connection on error + } }; websocket.onclose = () => { console.log("Lost connection to the ScoreSaber WebSocket. Attempting to reconnect..."); - clearInterval(heartbeatInterval!); // Clear the heartbeat interval setTimeout(connectWs, 5000); // Reconnect after 5 seconds };