Ejemplo n.º 1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="api">The Binance API.</param>
        /// <param name="client">The WebSocket client.</param>
        /// <param name="options">The options.</param>
        /// <param name="logger">The logger.</param>
        public UserDataWebSocketClient(IBinanceApi api, IWebSocketStream webSocket, IOptions <UserDataWebSocketClientOptions> options = null, ILogger <UserDataWebSocketClient> logger = null)
            : base(webSocket, logger)
        {
            Throw.IfNull(api, nameof(api));
            Throw.IfNull(webSocket, nameof(webSocket));

            _api     = api;
            _options = options?.Value;

            webSocket.Client.Open += (s, e) =>
            {
                var period = _options?.KeepAliveTimerPeriod ?? KeepAliveTimerPeriodDefault;
                period = Math.Min(Math.Max(period, KeepAliveTimerPeriodMin), KeepAliveTimerPeriodMax);

                _keepAliveTimer = new Timer(OnKeepAliveTimer, CancellationToken.None, period, period);
            };

            webSocket.Client.Close += async(s, e) =>
            {
                _keepAliveTimer.Dispose();

                foreach (var _ in _listenKeys)
                {
                    await _api.UserStreamCloseAsync(_.Key, _.Value, CancellationToken.None)
                    .ConfigureAwait(false);
                }
            };
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="api">The Binance API.</param>
 /// <param name="client">The WebSocket client.</param>
 /// <param name="options">The options.</param>
 /// <param name="logger">The logger.</param>
 public UserDataWebSocketClient(IBinanceApi api, IWebSocketClient client, IOptions <UserDataWebSocketClientOptions> options = null, ILogger <UserDataWebSocketClient> logger = null)
     : base(client, logger)
 {
     _api     = api;
     _options = options?.Value;
 }