private void InitializeServer() { if (_server != null) { _server.Stop(); _server = null; } LogMessage("Initializing Server..."); List<String> bindings = new List<String>(); int currentBinding = 1; String currentBindingKey = String.Format(WebServerHostKey, currentBinding); while (Configuration.HasSetting(currentBindingKey)) { bindings.Add(Configuration.GetString(currentBindingKey)); currentBinding++; currentBindingKey = String.Format(WebServerHostKey, currentBinding); } // If there are no bindings in the configuration file, we'll need to initialize those values. if (bindings.Count == 0) { const String defaultBinding = "http://localhost:8080/"; bindings.Add(defaultBinding); // If there aren't any bindings, the value of currentBindingKey will never have made it past 1. // As a result, we can just use that. Configuration.SetString(currentBindingKey, defaultBinding); Configuration.SaveSettings(); } // The endpoint used internally should always be the first binding in the configuration. // There's no need to use multiple bindings for internal references, we only need a single one. _endpoint = bindings.First(); WebServer ws = new WebServer(HandleRequest, bindings.ToArray()); _server = ws; _server.Run(); LogMessage("Server Initialized."); _requestHandlers = new List<IRequestHandler>(); try { RegisterHandlers(); } catch (Exception ex) { UnityEngine.Debug.LogException(ex); } }
private void ReleaseServer() { LogMessage("Checking for existing server..."); if (_server != null) { LogMessage("Server found; disposing..."); _server.Stop(); _server = null; LogMessage("Server Disposed."); } }
protected void Log(string msg) { WebServer.Log($"{Name}: {msg}"); }