コード例 #1
0
        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));
        }