private static async Task<ICryptoOrderBook> StartHuobi(string pair, bool optimized, bool l2Optimized) { var config = new HuobiMarketByPriceWebsocketClientConfig { Url = HuobiConstants.ApiMbpWebsocketUrl, CommunicatorName = "Huobi" }; var loggerFactory = new LoggerFactory().AddSerilog(Log.Logger); var client = HuobiWebsocketClientsFactory.CreateMarketByPriceClient(config, loggerFactory); var source = new HuobiOrderBookSource(client); var orderBook = l2Optimized ? new CryptoOrderBookL2(pair, source) : (ICryptoOrderBook)new CryptoOrderBook(pair, source); if (optimized) { ConfigureOptimized(source, orderBook); } _ = client.Start(); // send subscription request to order book data client.Send(new MarketByPriceSubscribeRequest("s1", pair, 20)); // send request to snapshot client.Send(new MarketByPricePullRequest("p1", pair, 20)); return orderBook; }
public async Task ConnectionEstablished_PingMessageReceived() { // Arrange using var client = HuobiWebsocketClientsFactory.CreateAccountClient( HuobiConstants.ApiAccountWebsocketUrl, "not_required_for_ping", "not_required_for_ping"); AccountPingRequest?receivedPingMessage = null; var receivedEvent = new ManualResetEvent(false); client.Streams.AccountPingMessageStream.Subscribe( message => { receivedPingMessage = message; receivedEvent.Set(); }); // Act await client.Start(); // Assert receivedEvent.WaitOne(TimeSpan.FromSeconds(30)); Assert.NotNull(receivedPingMessage); }
public async Task AuthenticationRequest_ResponseMessageReceived(string accessKey, string secretKey) { // Arrange using var client = HuobiWebsocketClientsFactory.CreateAccountClient( HuobiConstants.ApiAccountWebsocketUrl, accessKey, secretKey); AuthenticationResponse?response = null; var receivedEvent = new ManualResetEvent(false); client.Streams.AuthenticationResponseStream.Subscribe( message => { response = message; receivedEvent.Set(); }); // Act await client.Start(); // Assert receivedEvent.WaitOne(TimeSpan.FromSeconds(30)); Assert.NotNull(response); }
public async Task PullRequest_ResponseMessageReceived() { // Arrange using var client = HuobiWebsocketClientsFactory.CreateMarketClient(HuobiConstants.ApiWebsocketUrl); var request = new MarketCandlestickPullRequest("req1", "btcusdt", MarketCandlestickPeriodType.SixtyMinutes); MarketCandlestickPullResponse?response = null; var receivedEvent = new ManualResetEvent(false); client.Streams.CandlestickPullStream.Subscribe( message => { response = message; receivedEvent.Set(); }); await client.Start(); // Act client.Send(request); // Assert receivedEvent.WaitOne(TimeSpan.FromSeconds(30)); Assert.NotNull(response); }
private static (ITradeSource, IWebsocketClient) GetHuobi(string pair) { var config = new HuobiMarketWebsocketClientConfig { Url = HuobiConstants.ApiWebsocketUrl, CommunicatorName = "Huobi" }; var loggerFactory = new LoggerFactory().AddSerilog(Log.Logger); var client = HuobiWebsocketClientsFactory.CreateMarketClient(config, loggerFactory); var source = new HuobiTradeSource(client); client.Communicator.ReconnectionHappened.Subscribe( x => { var subscribeRequest = new MarketTradeDetailSubscribeRequest("id1", pair); client.Send(subscribeRequest); }); return(source, client.Communicator); }