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; }
public bool IsConnected { get; protected set; }
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;
}
}
public static SpotMarketWebSocketClient Create(Enums.Exchange exchange, string symbol, NLog.ILogger logger)
{
if (exchange == Enums.Exchange.Binance)
return new BinanceSpotMarketWebSocketClient(symbol, logger);
return null;
}
}
}