private static WebSocketDeflateCompressionOptions GetDeflateNegotiationOffer(HttpContext context)
        {
            WebSocketDeflateCompressionOptions compressionOptions = null;

            foreach (string headerValue in context.Request.Headers.GetCommaSeparatedValues(HeaderNames.SecWebSocketExtensions))
            {
                NameValueWithParametersHeaderValue parsedHeaderValue;
                if (NameValueWithParametersHeaderValue.TryParse(headerValue, out parsedHeaderValue) && parsedHeaderValue.Name == WEBSOCKET_PERMESSAGE_DEFLATE_EXTENSION)
                {
                    compressionOptions = WebSocketDeflateCompressionOptions.FromHeaderValue(parsedHeaderValue);

                    break;
                }
            }

            return(compressionOptions);
        }
        private static WebSocketDeflateCompressionProvider NegotiateDeflateCompression(HttpContext context, int?sendSegmentSize)
        {
            WebSocketDeflateCompressionProvider deflateCompressionProvider = null;

            WebSocketDeflateCompressionOptions deflateCompressionOptions = GetDeflateNegotiationOffer(context);

            if (deflateCompressionOptions != null)
            {
                deflateCompressionProvider = WebSocketDeflateCompressionProvider.Create(deflateCompressionOptions, sendSegmentSize);

                if (deflateCompressionProvider != null)
                {
                    SetDeflateNegotiationResponse(context, deflateCompressionProvider);
                }
            }

            return(deflateCompressionProvider);
        }