From 811574ae01d96dec12267c0066f39acbe70cc10c Mon Sep 17 00:00:00 2001 From: JKorf Date: Wed, 27 Jul 2022 21:25:46 +0200 Subject: [PATCH] Fixed websocket reconnecting too fast when reconnecting succeeds but resubscribing or authorization fails --- CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs index eb137c0..f1d43ee 100644 --- a/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs +++ b/CryptoExchange.Net/Sockets/CryptoExchangeWebSocketClient.cs @@ -43,6 +43,7 @@ namespace CryptoExchange.Net.Sockets private bool _stopRequested; private bool _disposed; private ProcessState _processState; + private DateTime _lastReconnectTime; /// @@ -216,6 +217,10 @@ namespace CryptoExchange.Net.Sockets OnReconnecting?.Invoke(); } + var sinceLastReconnect = DateTime.UtcNow - _lastReconnectTime; + if (sinceLastReconnect < Parameters.ReconnectInterval) + await Task.Delay(Parameters.ReconnectInterval - sinceLastReconnect).ConfigureAwait(false); + while (!_stopRequested) { _log.Write(LogLevel.Debug, $"Socket {Id} attempting to reconnect"); @@ -242,6 +247,7 @@ namespace CryptoExchange.Net.Sockets continue; } + _lastReconnectTime = DateTime.UtcNow; OnReconnected?.Invoke(); break; }