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