private void _WebSocket_OnMessage(object sender, MessageEventArgs e) { _lastReceivedTime = DateTime.UtcNow; string data = ""; if (e.IsBinary) { data = GZipDecompresser.Decompress(e.RawData); } else { data = System.Text.Encoding.Default.GetString(e.RawData); } var pingMessage = JsonConvert.DeserializeObject <PingMessage>(data); if (pingMessage != null && pingMessage.ping != 0) { _logger.Log(Log.LogLevel.Trace, $"WebSocekt received data, ping={pingMessage.ping}"); string pongData = $"{{\"pong\":{pingMessage.ping}}}"; _WebSocket.Send(pongData); _logger.Log(Log.LogLevel.Trace, $"WebSocket replied data, pong={pingMessage.ping}"); } else { OnResponseReceived?.Invoke(data); } }
private void _WebSocket_OnMessage(object sender, MessageEventArgs e) { _lastReceivedTime = DateTime.UtcNow; string data = e.Data; if (e.IsBinary) { data = GZipDecompresser.Decompress(e.RawData); } dynamic json = JToken.Parse(data); string action = json.action; string ch = json.ch; switch (action) { case "ping": // Receive Ping message { var pingMessageV2 = JsonConvert.DeserializeObject <PingMessageV2>(data); if (pingMessageV2 != null && pingMessageV2.data != null && pingMessageV2.data.ts != 0) { long ts = pingMessageV2.data.ts; _logger.Log(Log.LogLevel.Trace, $"WebSocket received data, ping={ts}"); string pongData = $"{{\"action\": \"pong\", \"data\": {{\"ts\":{ts} }} }}"; _WebSocket.Send(pongData); _logger.Log(Log.LogLevel.Trace, $"WebSocket replied data, pong={ts}"); } break; } case "req": // Receive authentication response { if ("auth".Equals(ch)) { var response = JsonConvert.DeserializeObject <WebSocketV2AuthResponse>(data); OnAuthenticationReceived?.Invoke(response); } else { _logger.Log(Log.LogLevel.Info, $"WebSocket received data, resp={data}"); OnDataReceived?.Invoke(data); } break; } case "sub": // Receive subscription response case "push": // Receive data response { _logger.Log(Log.LogLevel.Info, $"WebSocket received data, resp={data}"); OnDataReceived?.Invoke(data); break; } } }