private void _ws_OnMessage(object sender, MessageEventArgs e) { //Pre-parsing message. Doesn't fully deserialize now to dynamic to improve performance if (e.Data.StartsWith("{\"stream\":\"orders\"")) { Orders.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"trades\"")) { Trades.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"accounts\"")) { Account.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"marketDiff\"")) { DiffDepth.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"marketDepth\"")) { BookDepth.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"blockheight\"")) { BlockHeight.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"allMiniTickers\"")) { AllMiniTicker.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"miniTicker\"")) { IndividualMiniTicker.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"allTickers\"")) { AllTicker.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"ticker\"")) { IndividualTicker.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"kline_")) { Klines.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"transfers\"")) { Transfer.ProcessRecievedMessage(e.Data); } else if (e.Data.StartsWith("{\"stream\":\"transfers\"")) { Transfer.ProcessRecievedMessage(e.Data); } else if (!string.IsNullOrWhiteSpace(e.Data)) { //We might received an error text from backend, have to raise attention if so. if (e.Data.Contains("error")) { throw new WebSocketConnectionException(string.Format("Websocket DEX backend sent error message: {0}", e.Data)); } } }