Пример #1
0
 // NOTE: Ping is NOT required for WebSocket streams.
 public IObservable <HitBtc.Ticker> SubscribeMarketSummariesAsync(IEnumerable <string> symbols)
 {
     if (wsTicker.State == WebSocketState.None)
     {
         wsTicker.Error += Ws_Error;
         var obs = Observable.FromEventPattern <EventHandler <MessageReceivedEventArgs>, object, MessageReceivedEventArgs>(h => wsTicker.MessageReceived += h, h => wsTicker.MessageReceived -= h);
         wsTicker.Opened += (sender, e) =>
         {
             Debug.Print("Tickers socket connected.");
             foreach (var symbol in symbols)
             {
                 //var req = $"{{\"method\":\"subscribeTicker\",\"params\":{{\"symbol\":\"{symbol}\"}}}}";
                 //wsTicker.Send(req);
                 var reqTickersSub = new HitBtc.WsRequestBase()
                 {
                     method = "subscribeTicker", id = "subscribeTicker"
                 };
                 reqTickersSub.data.Add("symbol", symbol);
                 wsTicker.Send(JsonConvert.SerializeObject(reqTickersSub));
             }
         };
         wsTicker.Open();
         return(obs.SelectMany(OnTickerSocketMessage));
     }
     throw new InvalidOperationException();
     //ws.Security.EnabledSslProtocols = System.Security.Authentication.SslProtocols.Tls12;
     //return obs.Select(OnTickerSocketMessage);
 }
Пример #2
0
        public IObservable <HitBtc.WsTrades> SubscribePublicTradesAsync(string symbol, int limit)
        {
            var ws = wsTrades;

            if (ws.State == WebSocketState.None)
            {
                ws.Error += Ws_Error;
                var obs = Observable.FromEventPattern <EventHandler <MessageReceivedEventArgs>, object, MessageReceivedEventArgs>(h => ws.MessageReceived += h, h => ws.MessageReceived -= h);
                ws.Opened += (sender, e) =>
                {
                    Debug.Print("Trades socket connected.");
                    //var req = $"{{\"method\":\"subscribeTrades\",\"params\":{{\"symbol\":\"{symbol}\"}}}}";
                    //wsTrades.Send(req);
                    var reqTradesSub = new HitBtc.WsRequestBase()
                    {
                        method = "subscribeTrades", id = "subscribeTrades"
                    };
                    reqTradesSub.data.Add("symbol", symbol);
                    ws.Send(JsonConvert.SerializeObject(reqTradesSub));
                };
                ws.Open();
                return(obs.SelectMany(OnTradeSocketMessage));
            }
            throw new InvalidOperationException();
        }
Пример #3
0
 public HitBtcApiClient() : base("hitbtc.hash", typeof(HMACSHA256))
 {
     if (IsSigned)
     {
         clientAuth.Authenticator = new RestSharp.Authenticators.HttpBasicAuthenticator(ApiKey.ToManagedString(), ApiSecret.ToManagedString());
         wsTrading.Opened        += (sender, e) =>
         {
             Debug.Print("Trading socket connected.");
             var reqLogin = new HitBtc.WsRequestBase()
             {
                 method = "login", id = "authenticate"
             };
             var nn = nonce.ToString();
             reqLogin.data.Add("algo", HitBtc.AuthAlgo.HS256.ToString());
             reqLogin.data.Add("pKey", ApiKey.ToManagedString());
             reqLogin.data.Add("nonce", nn);
             reqLogin.data.Add("signature", ByteArrayToHexString(SignString(nn)));
             wsTrading.Send(JsonConvert.SerializeObject(reqLogin));
         };
         wsTrading.Open();
     }
 }