示例#1
0
        private void Init()
        {
            var webSocket = _webSocket = HuobiWebSocketClient.GetWebSocket();

            webSocket.OnMessage += (sender, e) => {
                var data = GZipDecompresser.Decompress(e.RawData);
                if (data.Contains("ping"))
                {
                    webSocket.Send(data.Replace("ping", "pong"));
                }
                else
                {
                    try {
                        var updateEvent = Json.Deserialize <DepthTickUpdateEvent>(data);
                        _cache[updateEvent.Ch] = updateEvent.Tick;
                    }
                    catch (Exception) {
                        // ignored
                    }
                }
            };
            webSocket.OnClose += (sender, e) => _cache.Clear();
            webSocket.OnError += (sender, e) => WebSocketUtils.CloseWebSocket(webSocket);
            webSocket.Connect();
        }
示例#2
0
        private void Init()
        {
            var webSocket = _webSocket = HuobiWebSocketClient.GetWebSocket();

            webSocket.OnMessage += (sender, e) => {
                var data = GZipDecompresser.Decompress(e.RawData);
                if (data.Contains("ping"))
                {
                    webSocket.Send(data.Replace("ping", "pong"));
                }
                else
                {
                    try {
                        var updateEvent = Json.Deserialize <TrickUpdateEvent>(data);
                        if (!_cache.ContainsKey(updateEvent.Ch))
                        {
                            lock (this) {
                                if (!_cache.ContainsKey(updateEvent.Ch))
                                {
                                    _cache[updateEvent.Ch] = SortedDictionaryFactory.NewSortedDictionary();
                                }
                            }
                        }

                        var ticks = _cache[updateEvent.Ch];
                        ticks[updateEvent.Tick.Id] = updateEvent.Tick;
                        while (ticks.Count > Size)
                        {
                            ticks.Remove(ticks.Last().Key);
                        }
                    }
                    catch (Exception) {
                        // ignored
                    }
                }
            };
            webSocket.OnClose += (sender, e) => _cache.Clear();
            webSocket.OnError += (sender, e) => WebSocketUtils.CloseWebSocket(webSocket);
            webSocket.Connect();
        }
示例#3
0
        private void Init()
        {
            var webSocket = _webSocket = HuobiWebSocketClient.GetWebSocket();

            webSocket.OnMessage += (sender, e) => {
                var data = GZipDecompresser.Decompress(e.RawData);
                if (data.Contains("ping"))
                {
                    (sender as WebSocket)?.Send(data.Replace("ping", "pong"));
                }
                else
                {
                    try {
                        var updateEvent = Json.Deserialize <TradeTickUpdateEvent>(data);
                        if (!_cache.ContainsKey(updateEvent.Ch))
                        {
                            _cache[updateEvent.Ch] = new ConcurrentQueue <TradeData>();
                        }

                        foreach (var tradeData in updateEvent.Tick.Data)
                        {
                            _cache[updateEvent.Ch].Enqueue(tradeData);
                        }

                        while (_cache[updateEvent.Ch].Count > 100)
                        {
                            _cache[updateEvent.Ch].TryDequeue(out _);
                        }
                    }
                    catch (Exception exception) {
                        Console.WriteLine(exception);
                    }
                }
            };
            webSocket.OnClose += (sender, e) => _cache.Clear();
            webSocket.OnError += (sender, e) => WebSocketUtils.CloseWebSocket(webSocket);
            webSocket.Connect();
        }