public String ReceiveText() { NetworkDataBuffer result = new NetworkDataBuffer(); if (!webSocketNetwork.WsHandshaked) { return(result.ExtractString(0, result.Data.Length)); } NetworkDataBuffer cache = new NetworkDataBuffer(); // Receive WebSocket frame data while (!webSocketNetwork.WsReceived) { Int32 required = webSocketNetwork.RequiredReceiveFrameSize(); cache.Resize(required); Int32 received = (Int32)base.Receive(cache.Data, 0, required); if (received != required) { return(result.ExtractString(0, result.Data.Length)); } webSocketNetwork.PrepareReceiveFrame(cache.Data, 0, received); } // Copy WebSocket frame data result.Append(webSocketNetwork.WsReceiveBuffer.ToArray(), webSocketNetwork.WsHeaderSize, webSocketNetwork.WsHeaderSize + webSocketNetwork.WsPayloadSize); webSocketNetwork.PrepareReceiveFrame(null, 0, 0); return(result.ExtractString(0, result.Data.Length)); }