/// <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); }
/// <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); }