public override void OnMessage(WebSocketReceiveResult result, ArraySegment <byte> arraySegment)
        {
            connTimeoutTimer.Stop();
            connTimeoutTimer.Start();
            if (result.MessageType == System.Net.WebSockets.WebSocketMessageType.Text)
            {
                var text = Encoding.UTF8.GetString(arraySegment.Array, arraySegment.Offset, arraySegment.Count);
                Console.WriteLine("WS Recieved: " + text);
                if (text == "end")
                {
                    Stop().Wait();
                }
                else if (text == "begin")
                {
                    lastestGuess = "";
                    SREnded      = false;
                    timer.Stop();
                    Console.WriteLine("Creating SRClient");
                    client = new SRClient();
                    client.DoSR(config.srKey, Conversation_ResponseReceived, OnSRClose, config.srLocale, config.srEndpoint);

                    _stop = false;
                }
                else
                {
                    _OnMessage?.Invoke(Send, text);
                }
            }
            else if (result.MessageType == System.Net.WebSockets.WebSocketMessageType.Binary)
            {
                Console.WriteLine("WS Recieved (bytes): " + arraySegment.Count);
                if (!SREnded)
                {
                    client.SendAudio(arraySegment.ToArray(), arraySegment.Count);
                    totalBytes += arraySegment.Count;
                    Console.WriteLine("Sent {0}k bytes", totalBytes / 1024.0);
                }
            }
        }