From 03f18f23d90463cf8d62561045da800a183d8675 Mon Sep 17 00:00:00 2001 From: AvranWong Date: Tue, 17 Feb 2026 23:56:10 +0800 Subject: [PATCH] fix: prevent WebSocket reconnect loop causing memory leak --- src/data/binanceWs.js | 5 ++++- src/data/chainlinkWs.js | 5 ++++- src/data/polymarketLiveWs.js | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/data/binanceWs.js b/src/data/binanceWs.js index aa4d8d0..ef1fdc4 100644 --- a/src/data/binanceWs.js +++ b/src/data/binanceWs.js @@ -42,9 +42,12 @@ export function startBinanceTradeStream({ symbol = CONFIG.symbol, onUpdate } = { } }); + let reconnecting = false; const scheduleReconnect = () => { - if (closed) return; + if (closed || reconnecting) return; + reconnecting = true; try { + ws?.removeAllListeners(); ws?.terminate(); } catch { // ignore diff --git a/src/data/chainlinkWs.js b/src/data/chainlinkWs.js index 8a64690..fc11afc 100644 --- a/src/data/chainlinkWs.js +++ b/src/data/chainlinkWs.js @@ -66,9 +66,12 @@ export function startChainlinkPriceStream({ } }; + let reconnecting = false; const scheduleReconnect = () => { - if (closed) return; + if (closed || reconnecting) return; + reconnecting = true; try { + ws?.removeAllListeners(); ws?.terminate(); } catch { // ignore diff --git a/src/data/polymarketLiveWs.js b/src/data/polymarketLiveWs.js index 58a4403..11e6525 100644 --- a/src/data/polymarketLiveWs.js +++ b/src/data/polymarketLiveWs.js @@ -51,9 +51,12 @@ export function startPolymarketChainlinkPriceStream({ agent: wsAgentForUrl(wsUrl) }); + let reconnecting = false; const scheduleReconnect = () => { - if (closed) return; + if (closed || reconnecting) return; + reconnecting = true; try { + ws?.removeAllListeners(); ws?.terminate(); } catch { // ignore