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