private async Task ReceiveMessage()

in src/Azure.AppService.Tunnel/Tunnel/WebSockets/WebSocketConnection.cs [111:127]


    private async Task<IIncomingMessage> ReceiveMessage(byte[] receiveBuffer)
    {
        var segment = new ArraySegment<byte>(receiveBuffer);
        var receiveResult = await _webSocket.ReceiveAsync(segment, _lifetime);

        if (receiveResult.MessageType == WebSocketMessageType.Close)
        {
            return CloseIncomingMessage.Instance;
        }

        if (receiveResult.EndOfMessage)
        {
            return CreateMessage(receiveResult.MessageType, segment.Array.Take(receiveResult.Count).ToArray());
        }

        return await ReadRemainingMessage(receiveResult, receiveBuffer);
    }