diff --git a/src/services/beatsaver.ts b/src/services/beatsaver.ts index bf25737..6d8edcc 100644 --- a/src/services/beatsaver.ts +++ b/src/services/beatsaver.ts @@ -13,6 +13,7 @@ let totalDeleted: number | undefined; // Thee last time a map was heard let lastMap: number = Date.now(); +let socket: WebsocketClient | undefined; async function update() { if (totalCreated == undefined) { @@ -45,7 +46,7 @@ async function update() { } async function connectWebsocket() { - const socket = new WebsocketClient(WEBSOCKET_URL); + socket = new WebsocketClient(WEBSOCKET_URL); await connectMongo(); let beatSaver = await BeatSaverSchema.findOne({ _id: "beatsaver" }); if (!beatSaver) { @@ -132,6 +133,7 @@ cron.schedule("*/1 * * * *", () => { // 1 minute if (lastMap && Date.now() - lastMap > 60_000) { console.log("Beatsaver websocket is dead, reconnecting"); + socket?.close(); connectWebsocket(); } }); diff --git a/src/services/scoresaber.ts b/src/services/scoresaber.ts index 74fdb3f..6a01aec 100644 --- a/src/services/scoresaber.ts +++ b/src/services/scoresaber.ts @@ -12,6 +12,7 @@ let totalScores: number | undefined; // Thee last time a score was heard let lastScore: number = Date.now(); +let socket: WebsocketClient | undefined; /** * Updates the player count and adds data to influx @@ -50,7 +51,7 @@ async function connectWebsocket() { // set total scores to the current total plays in the database totalScores = leaderboard?.totalPlays || 0; - const socket = new WebsocketClient("wss://scoresaber.com/ws"); + socket = new WebsocketClient("wss://scoresaber.com/ws"); socket.onopen = () => { console.log("Connected to scoresaber websocket"); }; @@ -160,6 +161,7 @@ cron.schedule("*/1 * * * *", () => { // 1 minute if (lastScore && Date.now() - lastScore > 60_000) { console.log("Scoresaber websocket is dead, reconnecting"); + socket?.close(); connectWebsocket(); } });