using System; using System.Collections.Generic; using System.Threading.Tasks; using System.Linq; using System.IO; using Bittrex.Net; using Bittrex.Net.Objects; using CryptoExchange.Net.Authentication; using CryptoExchange.Net.Logging; namespace WebSocket.Clients { public class BittrexWebsocket4Net : WebSocket4NetSocket { #region Members private BittrexSocketClient socketClient; private string[] subscribedPairs; //private Timer Timer; //private DateTime? LastCall; private DateTime? CreateTime; #endregion /// /// ctor /// public BittrexWebsocket4Net() { } public override void Create(string url) { //Socket.EnableAutoSendPing = false; //Socket.MessageReceived += Socket_MessageReceived; CreateTime = DateTime.Now; BittrexClient.SetDefaultOptions(new BittrexClientOptions() { ApiCredentials = new ApiCredentials("d95322fdc5c94df7afa234d184195fe8", "5111332bbeed417883e912f8c288f596"), LogVerbosity = LogVerbosity.Info, LogWriters = new List() { Console.Out } }); socketClient = new BittrexSocketClient(); } //private void Socket_MessageReceived(object sender, WebSocket4Net.MessageReceivedEventArgs e) //{ // LastCall = DateTime.Now; //} public async override Task Connect() { await socketClient.SubscribeToMarketSummariesUpdateAsync(summaries => { if (this.subscribedPairs != null && this.subscribedPairs.Count() > 0) { foreach (var item in summaries) { if (this.subscribedPairs.Contains(item.MarketName)) { //data[item.MarketName] = item; OnDataReceived1(new Dictionary { { item.MarketName, item } }); } } } //var item = summaries.SingleOrDefault(s => s.MarketName == "BTC-ETH"); //Console.WriteLine($"BTC-ETH: {summaries.SingleOrDefault(s => s.MarketName == "BTC-ETH")?.Last}"); }); //await base.Connect(); //Timer = new Timer((obj) => SpecialTick(), null, 16000, 16000); //BittrexClient.SetDefaultOptions(new BittrexClientOptions() //{ // ApiCredentials = new ApiCredentials("d95322fdc5c94df7afa234d184195fe8", "5111332bbeed417883e912f8c288f596"), // LogVerbosity = LogVerbosity.Info, // LogWriters = new List() { Console.Out } //}); //// Websocket //var socketClient = new BittrexSocketClient(); //var subscription = await socketClient.SubscribeToMarketSummariesUpdateAsync(summaries => //{ // foreach (var item in summaries) { // data[item.MarketName] = item; // } // //var item = summaries.SingleOrDefault(s => s.MarketName == "BTC-ETH"); // //Console.WriteLine($"BTC-ETH: {summaries.SingleOrDefault(s => s.MarketName == "BTC-ETH")?.Last}"); //}); } public override Task Connect(string[] pairs) { //data.Clear(); this.subscribedPairs = pairs; return Task.CompletedTask; } //private void SpecialTick() //{ // DateTime? lastCall = new List() { Socket.LastActiveTime, LastCall, CreateTime }.Where(it => it.HasValue && it != DateTime.MinValue).Max(); // if (lastCall == null || DateTime.Now - lastCall > TimeSpan.FromSeconds(15))//15 - by auto tick // { // OnTick(); // } //} public override Task Close() { socketClient.UnsubscribeAllStreams(); return Task.FromResult(true); // base.Close(); } } }