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