/// <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; }