private static void SetDeflateNegotiationResponse(HttpContext context, WebSocketDeflateCompressionProvider deflateCompressionProvider)
        {
            NameValueWithParametersHeaderValue secWebSocketExtensionsHeaderValue = new NameValueWithParametersHeaderValue(WEBSOCKET_PERMESSAGE_DEFLATE_EXTENSION);

            if (deflateCompressionProvider.ClientNoContextTakeover)
            {
                secWebSocketExtensionsHeaderValue.Parameters.Add(new NameValueHeaderValue(WebSocketDeflateCompressionOptions.CLIENT_NO_CONTEXT_TAKEOVER_OPTION));
            }

            if (deflateCompressionProvider.ServerNoContextTakeover)
            {
                secWebSocketExtensionsHeaderValue.Parameters.Add(new NameValueHeaderValue(WebSocketDeflateCompressionOptions.SERVER_NO_CONTEXT_TAKEOVER_OPTION));
            }

            context.Response.Headers[HeaderNames.SecWebSocketExtensions] = secWebSocketExtensionsHeaderValue.ToString();
        }
        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);
        }