示例#1
0
        /// <summary>
        /// Creates a new instance of the Watson Webserver.
        /// </summary>
        /// <param name="hostname">Hostname or IP address on which to listen.</param>
        /// <param name="port">TCP port on which to listen.</param>
        /// <param name="ssl">Specify whether or not SSL should be used (HTTPS).</param>
        /// <param name="defaultRequestHandler">Method used when a request is received and no routes are defined.  Commonly used as the 404 handler when routes are used.</param>
        public Server(string hostname, int port, bool ssl, Func <HttpRequest, HttpResponse> defaultRequestHandler)
        {
            if (String.IsNullOrEmpty(hostname))
            {
                hostname = "*";
            }
            if (port < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(port));
            }
            if (defaultRequestHandler == null)
            {
                throw new ArgumentNullException(nameof(defaultRequestHandler));
            }

            _HttpListener = new HttpListener();

            _ListenerHostnames = new List <string>();
            _ListenerHostnames.Add(hostname);
            _ListenerPort = port;
            _ListenerSsl  = ssl;
            _DefaultRoute = defaultRequestHandler;

            Events = new EventCallbacks();
            InitializeRouteManagers();
            AccessControl = new AccessControlManager(AccessControlMode.DefaultPermit);
            Welcome();

            _TokenSource = new CancellationTokenSource();
            _Token       = _TokenSource.Token;
            Task.Run(() => StartServer(_Token), _Token);
        }
示例#2
0
        /// <summary>
        /// Creates a new instance of the Watson Webserver.
        /// </summary>
        /// <param name="hostnames">Hostnames or IP addresses on which to listen.  Note: multiple listener endpoints is not supported on all platforms.</param>
        /// <param name="port">TCP port on which to listen.</param>
        /// <param name="ssl">Specify whether or not SSL should be used (HTTPS).</param>
        /// <param name="defaultRequestHandler">Method used when a request is received and no routes are defined.  Commonly used as the 404 handler when routes are used.</param>
        public Server(List <string> hostnames, int port, bool ssl, Func <HttpRequest, HttpResponse> defaultRequestHandler)
        {
            if (port < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(port));
            }
            if (defaultRequestHandler == null)
            {
                throw new ArgumentNullException(nameof(defaultRequestHandler));
            }

            _HttpListener = new HttpListener();

            _ListenerHostnames = new List <string>();
            if (hostnames == null || hostnames.Count < 1)
            {
                _ListenerHostnames.Add("*");
            }
            else
            {
                foreach (string curr in hostnames)
                {
                    _ListenerHostnames.Add(curr);
                }
            }

            _ListenerPort = port;
            _ListenerSsl  = ssl;
            _DefaultRoute = defaultRequestHandler;

            InitializeRouteManagers();
            AccessControl = new AccessControlManager(AccessControlMode.DefaultPermit);
            Welcome();

            _TokenSource = new CancellationTokenSource();
            _Token       = _TokenSource.Token;
            Task.Run(() => StartServer(_Token), _Token);
        }