示例#1
0
        /// <summary>
        /// Creates an instance of a websockets brokerage
        /// </summary>
        /// <param name="wssUrl">Websockets base url</param>
        /// <param name="websocket">Websocket client instance</param>
        /// <param name="restClient">Rest client instance</param>
        /// <param name="apiKey">Brokerage api auth key</param>
        /// <param name="apiSecret">Brokerage api auth secret</param>
        /// <param name="websocketMaximumIdle">The maximum amount of time the socket can go idle before triggering a reconnect</param>
        /// <param name="name">Name of brokerage</param>
        protected BaseWebsocketsBrokerage(string wssUrl, IWebSocket websocket, IRestClient restClient, string apiKey, string apiSecret, TimeSpan websocketMaximumIdle, string name) : base(name)
        {
            JsonSettings = new JsonSerializerSettings {
                FloatParseHandling = FloatParseHandling.Decimal
            };
            CachedOrderIDs     = new ConcurrentDictionary <int, Orders.Order>();
            _connectionHandler = new DefaultConnectionHandler {
                MaximumIdleTimeSpan = websocketMaximumIdle
            };

            WebSocket = websocket;
            WebSocket.Initialize(wssUrl);
            WebSocket.Message += (sender, message) =>
            {
                OnMessage(sender, message);
                _connectionHandler.KeepAlive(LastHeartbeatUtcTime);
            };

            _connectionHandler.Initialize(Guid.NewGuid().ToString());
            _connectionHandler.ReconnectRequested += (sender, args) =>
            {
                Reconnect();
            };

            RestClient = restClient;
            ApiSecret  = apiSecret;
            ApiKey     = apiKey;
        }