Esempio n. 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();
        }
Esempio n. 2
0
        public void Decompress_Success()
        {
            byte[] compressed = GZipDecompresser.Compress("Huobi");

            string origin = GZipDecompresser.Decompress(compressed);

            Assert.Equal("Huobi", origin);
        }
        private void WsSourceOnByteDataEvent(WsMessageType msgType, byte[] data)
        {
            switch (msgType)
            {
            case WsMessageType.ByteData:
                string message = GZipDecompresser.Decompress(data);
                _queueMessagesReceivedFromExchange.Enqueue(message);
                break;

            default:
                throw new NotSupportedException(data.ToString());
            }
        }
Esempio n. 4
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();
        }
Esempio n. 5
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();
        }
        private void MarketDataSourceOnMessageEvent(WsMessageType msgType, byte[] data)
        {
            switch (msgType)
            {
            case WsMessageType.Opened:
                break;

            case WsMessageType.Closed:
                OnDisconnectEvent();
                break;

            case WsMessageType.ByteData:
                string message = GZipDecompresser.Decompress(data);
                _queueMarketDataReceivedFromExchange.Enqueue(message);
                break;

            case WsMessageType.Error:
                break;

            default:
                throw new NotSupportedException("");
            }
        }
        protected override async Task OnBinaryMessage(byte[] data)
        {
            string json = GZipDecompresser.Decompress(data);

            await OnTextMessage(json);
        }