private bool ProcessWebsocketUpgrade(WebSocketClient client)
        {
            var message = client.GetHttpRequest().GetAwaiter().GetResult();

            if (message?.StartsWith("GET") ?? false)
            {
                if (!GetAuthentication(message))
                {
                    return(false);
                }

                var parsedConnection = new Regex("Connection:(.*)", RegexOptions.IgnoreCase).Match(message).Groups[1].Value.Trim();
                if (!parsedConnection.Contains("Upgrade") && !parsedConnection.Contains("upgrade"))
                {
                    return(false);
                }

                var response = CreateWebsocketUpgradeReponse(message);

                client.SendRawData(response).GetAwaiter().GetResult();

                return(true);
            }

            return(false);
        }
        private async Task <bool> ProcessWebsocketUpgrade(WebSocketClient client)
        {
            var message = await client.GetHttpRequest().ConfigureAwait(false);

            if (message?.StartsWith("GET") ?? false)
            {
                if (!GetAuthentication(message))
                {
                    return(false);
                }

                if (!new Regex("Connection:(.*)").Match(message).Groups[1].Value.Trim().StartsWith("Upgrade"))
                {
                    return(false);
                }

                var response = CreateWebsocketUpgradeReponse(message);
                await client.SendRawData(response).ConfigureAwait(false);

                return(true);
            }

            return(false);
        }