using Binance.TradeRobot.Model.Base; using System; namespace SDKAdapter.WebSockets.Market { public class SpotMarketWebSocketClient { /// /// 更新间隔(ms) /// protected int updateInterval = 3000; /// /// 交易对 /// public string Symbol { get; private set; } /// /// 最新成交价 /// public decimal NewestPrice { get; protected set; } /// r /// 上一次价格更新时间 /// public DateTime? LastUpdateTime { get; private set; } public NLog.ILogger logger { get; private set; } protected bool IsConnected { get; set; } public static SpotMarketWebSocketClient Create(Enums.Exchange exchange, string symbol, NLog.ILogger logger) { if (exchange == Enums.Exchange.Binance) return new BinanceSpotMarketWebSocketClient(symbol, logger); return null; } public SpotMarketWebSocketClient(string symbol, NLog.ILogger logger) { this.Symbol = symbol; this.logger = logger; } public virtual void Start() { IsConnected = true; } public virtual void Stop() { IsConnected = false; } protected virtual void OnReceived(decimal newestPrice) { NewestPrice = newestPrice; if (LastUpdateTime == null || (DateTime.Now - LastUpdateTime.Value).TotalMilliseconds >= updateInterval) { logger.Info($"NewestPrice:{newestPrice}"); LastUpdateTime = DateTime.Now; } } } }