public WebSocketListener(IPEndPoint endpoint, WebSocketListenerOptions options)
        {
            Guard.ParameterCannotBeNull(endpoint, nameof(endpoint));
            Guard.ParameterCannotBeNull(options, nameof(options));

            _configuration = new WebSocketListenerConfig(options);

            _disposing = new CancellationTokenSource();

            _listener = new TcpListener(endpoint);
            if (_configuration.Options.UseNagleAlgorithm.HasValue)
            {
                _listener.Server.NoDelay = !_configuration.Options.UseNagleAlgorithm.Value;
            }

            _negotiationQueue = new HttpNegotiationQueue(_configuration);
        }
        public WebSocketHandshaker(WebSocketListenerConfig configuration)
        {
            Guard.ParameterCannotBeNull(configuration, nameof(configuration));

            _configuration = configuration;
        }