public void UnsubscribingStream_Should_CloseTheSocket() { // arrange bool closed = false; var socket = new Mock <IWebsocket>(); socket.Setup(s => s.Close()).Raises(s => s.OnClose += null, new ClosedEventArgs(0, "", true)); socket.Setup(s => s.Connect()); socket.Setup(s => s.Url).Returns("test"); socket.Setup(s => s.SetEnabledSslProtocols(It.IsAny <System.Security.Authentication.SslProtocols>())); socket.Object.OnClose += (sender, args) => { closed = true; }; var factory = new Mock <IWebsocketFactory>(); factory.Setup(s => s.CreateWebsocket(It.IsAny <string>())).Returns(socket.Object); var client = new BinanceSocketClient { SocketFactory = factory.Object }; var subscription = client.SubscribeToTradesStream("test", (data) => { }); // act client.UnsubscribeFromStream(subscription.Data); // assert Assert.IsTrue(closed); }
private void BinanceWebsocketHandleEvents() { // SUBSCRIBE var sub = m_socketClient.SubscribeToAllSymbolTicker(data => { Console.WriteLine("Reveived list update"); }); // HANDLE EVENTS sub.Data.Closed += () => { Console.WriteLine("Socket closed"); }; sub.Data.Error += (e) => { Console.WriteLine("Socket error " + e.Message); }; Thread.Sleep(15000); // UNSUBSCRIBE m_socketClient.UnsubscribeFromStream(sub.Data); // Additionaly, all sockets can be closed with the UnsubscribeAllStreams method. m_socketClient.UnsubscribeAllStreams(); }
public void UnsubscribeFromStream(string key, BinanceSocketClient socketClient) { try { BinanceStreamSubscription streamSubscription = GetSubscriptionByKey(key); if (streamSubscription != null) { socketClient.UnsubscribeFromStream(streamSubscription); subscriptionList.Remove(key); } } catch (Exception ex) { _logger.LogException(ex); } }
public void UnsubscribeFromAllStreams(BinanceSocketClient socketClient) { try { var streamsList = subscriptionList.Keys.ToList(); foreach (var streamKey in streamsList) { BinanceStreamSubscription streamSubscription = GetSubscriptionByKey(streamKey); if (streamSubscription != null) { socketClient.UnsubscribeFromStream(streamSubscription); subscriptionList.Remove(streamKey); } } } catch (Exception ex) { _logger.LogException(ex); } }
public void TickerThread(ExchangeData Data) { InProgress = true; using (ApiSocketClient = new BinanceSocketClient()) { //ApiSocketClient.SubscribeToAccountUpdateStream("ikKz2GYMzCSNFjPzPeJHGYQI6sXwVNIzX7KNg31FDZkRE9OVrOE3al8PQwS8", (data) => //{ // var d = data; //}); //ETHBTC //BTCUSDT //QTUMBTC var successDepth = ApiSocketClient.SubscribeToDepthStream(Data.ExchangeType, (data) => { if (data.Asks.Any()) { Data.Ask = (decimal)data.Asks.OrderBy(x => x.Price).First().Price; } if (data.Bids.Any()) { Data.Bid = (decimal)data.Bids.OrderByDescending(x => x.Price).First().Price; } Data.UpdateTime = DateTime.UtcNow; }); if (!successDepth.Success) { throw new Exception(successDepth.Error.Message); } while (InProgress) { Thread.Sleep(500); } ApiSocketClient.UnsubscribeFromStream(successDepth.Data); Data.Status = EnumData.ExchangeStatus.停止; } }
static void Main(string[] args) { BinanceDefaults.SetDefaultApiCredentials("APIKEY", "APISECRET"); BinanceDefaults.SetDefaultLogVerbosity(LogVerbosity.Debug); BinanceDefaults.SetDefaultLogOutput(Console.Out); using (var client = new BinanceClient()) using (var socketClient = new BinanceSocketClient()) { // Public var ping = client.Ping(); var serverTime = client.GetServerTime(); var orderBook = client.GetOrderBook("BNBBTC", 10); var aggTrades = client.GetAggregatedTrades("BNBBTC", startTime: DateTime.UtcNow.AddMinutes(-2), endTime: DateTime.UtcNow, limit: 10); var klines = client.GetKlines("BNBBTC", KlineInterval.OneHour, startTime: DateTime.UtcNow.AddHours(-10), endTime: DateTime.UtcNow, limit: 10); var prices24h = client.Get24HPrices("BNBBTC"); var allPrices = client.GetAllPrices(); var allBookPrices = client.GetAllBookPrices(); // Private var openOrders = client.GetOpenOrders("BNBBTC"); var allOrders = client.GetAllOrders("BNBBTC"); var testOrderResult = client.PlaceTestOrder("BNBBTC", OrderSide.Buy, OrderType.Limit, TimeInForce.GoodTillCancel, 1, 1); var queryOrder = client.QueryOrder("BNBBTC", allOrders.Data[0].OrderId); var orderResult = client.PlaceOrder("BNBBTC", OrderSide.Sell, OrderType.Limit, TimeInForce.GoodTillCancel, 10, 0.0002); var cancelResult = client.CancelOrder("BNBBTC", orderResult.Data.OrderId); var accountInfo = client.GetAccountInfo(); var myTrades = client.GetMyTrades("BNBBTC"); // Withdrawal/deposit var withdrawalHistory = client.GetWithdrawHistory(); var depositHistory = client.GetDepositHistory(); var withdraw = client.Withdraw("ASSET", "ADDRESS", 0); // Streams var successDepth = socketClient.SubscribeToDepthStream("bnbbtc", (data) => { // handle data }); var successTrades = socketClient.SubscribeToTradesStream("bnbbtc", (data) => { // handle data }); var successKline = socketClient.SubscribeToKlineStream("bnbbtc", KlineInterval.OneMinute, (data) => { // handle data }); var successStart = client.StartUserStream(); var successAccount = socketClient.SubscribeToAccountUpdateStream(successStart.Data.ListenKey, (data) => { // handle data }); var successOrder = socketClient.SubscribeToOrderUpdateStream(successStart.Data.ListenKey, (data) => { // handle data }); socketClient.UnsubscribeFromStream(successDepth.Data); socketClient.UnsubscribeFromAccountUpdateStream(); socketClient.UnsubscribeAllStreams(); } Console.ReadLine(); }