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