diff --git a/QuantConnect.BybitBrokerage/BybitWebSocketWrapper.cs b/QuantConnect.BybitBrokerage/BybitWebSocketWrapper.cs index 197feb6..dcbef76 100644 --- a/QuantConnect.BybitBrokerage/BybitWebSocketWrapper.cs +++ b/QuantConnect.BybitBrokerage/BybitWebSocketWrapper.cs @@ -31,6 +31,7 @@ public class BybitWebSocketWrapper : WebSocketClientWrapper /// protected override void OnOpen() { + CleanUpTimer(); _pingTimer = new Timer(TimeSpan.FromSeconds(20).TotalMilliseconds); _pingTimer.Elapsed += PingTimerElapsed; _pingTimer.Start(); @@ -41,6 +42,24 @@ protected override void OnOpen() /// Event invocator for the event /// protected override void OnClose(WebSocketCloseData e) + { + CleanUpTimer(); + base.OnClose(e); + } + + /// + /// Event invocator for the event + /// + protected override void OnError(WebSocketError e) + { + CleanUpTimer(); + base.OnError(e); + } + + /// + /// Helper method to clean up timer if required + /// + private void CleanUpTimer() { if (_pingTimer != null) { @@ -49,11 +68,8 @@ protected override void OnClose(WebSocketCloseData e) _pingTimer.Dispose(); _pingTimer = null; } - - base.OnClose(e); } - - + private void PingTimerElapsed(object sender, ElapsedEventArgs e) { Send("{\"op\":\"ping\"}");