using Binance.Net.Clients; using Binance.Net.Enums; using System.Threading; namespace SDKAdapter.WebSockets.Market { public class BinanceSpotMarketWebSocketClient : SpotMarketWebSocketClient { private BinanceSocketClient binanceSocketClient; private CancellationTokenSource cancellationTokenSource; public BinanceSpotMarketWebSocketClient(string symbol, NLog.ILogger logger) : base(symbol, logger) { binanceSocketClient = new BinanceSocketClient(); } public override void Start() { if (IsConnected) return; IsConnected = true; cancellationTokenSource = new CancellationTokenSource(); binanceSocketClient.SpotStreams.SubscribeToKlineUpdatesAsync(Symbol, KlineInterval.OneMinute, (e) => { base.OnReceived(e.Data.Data.ClosePrice); }, cancellationTokenSource.Token); } public override void Stop() { if (!IsConnected) return; IsConnected = false; cancellationTokenSource.Cancel(); binanceSocketClient.SpotStreams.Dispose(); cancellationTokenSource = null; } } }