diff --git a/CryptoExchange.Net.UnitTests/TestImplementations/TestSocket.cs b/CryptoExchange.Net.UnitTests/TestImplementations/TestSocket.cs index 31b4ff0..7157419 100644 --- a/CryptoExchange.Net.UnitTests/TestImplementations/TestSocket.cs +++ b/CryptoExchange.Net.UnitTests/TestImplementations/TestSocket.cs @@ -58,6 +58,10 @@ namespace CryptoExchange.Net.UnitTests.TestImplementations throw new Exception("Socket not connected"); } + public void Reset() + { + } + public Task Close() { Connected = false; diff --git a/CryptoExchange.Net/Interfaces/IWebsocket.cs b/CryptoExchange.Net/Interfaces/IWebsocket.cs index f0f081b..3c6829e 100644 --- a/CryptoExchange.Net/Interfaces/IWebsocket.cs +++ b/CryptoExchange.Net/Interfaces/IWebsocket.cs @@ -26,6 +26,7 @@ namespace CryptoExchange.Net.Interfaces TimeSpan Timeout { get; set; } Task Connect(); void Send(string data); + void Reset(); Task Close(); void SetProxy(string host, int port); } diff --git a/CryptoExchange.Net/SocketClient.cs b/CryptoExchange.Net/SocketClient.cs index baee42c..4e34cb5 100644 --- a/CryptoExchange.Net/SocketClient.cs +++ b/CryptoExchange.Net/SocketClient.cs @@ -173,6 +173,8 @@ namespace CryptoExchange.Net Task.Run(() => { Thread.Sleep(ReconnectInterval); + socket.Reset(); + if (!socket.Connect().Result) { log.Write(LogVerbosity.Debug, $"Socket {socket.Id} failed to reconnect"); diff --git a/CryptoExchange.Net/Sockets/BaseSocket.cs b/CryptoExchange.Net/Sockets/BaseSocket.cs index 0764948..e152e7c 100644 --- a/CryptoExchange.Net/Sockets/BaseSocket.cs +++ b/CryptoExchange.Net/Sockets/BaseSocket.cs @@ -163,6 +163,12 @@ namespace CryptoExchange.Net.Sockets }).ConfigureAwait(false); } + public virtual void Reset() + { + socket.Dispose(); + socket = null; + } + public virtual void Send(string data) { socket.Send(data);