private async Task ReadMessage()
        {
            WebSocketReceiveResult result;
            var message = new ArraySegment <byte>(new byte[4096]);

            do
            {
                result = await client.ReceiveAsync(message, cts.Token);

                if (result.MessageType != WebSocketMessageType.Text)
                {
                    break;
                }

                var    messageBytes    = message.Skip(message.Offset).Take(result.Count).ToArray();
                string receivedMessage = Encoding.UTF8.GetString(messageBytes);

                BitsoTradeDataModel bookData = JsonConvert.DeserializeObject <BitsoTradeDataModel>(receivedMessage);

                if (!string.IsNullOrEmpty(bookData.Book))
                {
                    OnTradeMessage?.Invoke(bookData, bookData.Book);
                }
            }while (!result.EndOfMessage);
        }
        private void OnTrade(object sender, string book)
        {
            BitsoTradeDataModel bookData = sender as BitsoTradeDataModel;

            timeTrading = DateTime.Now;

            CoinMath(bookData.Payload, coinsData[book]);
        }