diff options
5 files changed, 38 insertions, 33 deletions
diff --git a/MediaBrowser.Common/Net/IServerManager.cs b/MediaBrowser.Common/Net/IServerManager.cs index 3234e7060..32be88a34 100644 --- a/MediaBrowser.Common/Net/IServerManager.cs +++ b/MediaBrowser.Common/Net/IServerManager.cs @@ -5,6 +5,9 @@ using System.Threading.Tasks; namespace MediaBrowser.Common.Net { + /// <summary> + /// Interface IServerManager + /// </summary> public interface IServerManager : IDisposable { /// <summary> @@ -22,7 +25,14 @@ namespace MediaBrowser.Common.Net /// <summary> /// Starts this instance. /// </summary> - void Start(); + /// <param name="urlPrefix">The URL prefix.</param> + /// <param name="enableHttpLogging">if set to <c>true</c> [enable HTTP logging].</param> + void Start(string urlPrefix, bool enableHttpLogging); + + /// <summary> + /// Starts the web socket server. + /// </summary> + void StartWebSocketServer(); /// <summary> /// Sends a message to all clients currently connected via a web socket @@ -62,7 +72,7 @@ namespace MediaBrowser.Common.Net /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> Task SendWebSocketMessageAsync<T>(string messageType, Func<T> dataFunction, IEnumerable<IWebSocketConnection> connections, CancellationToken cancellationToken); - + /// <summary> /// Adds the web socket listeners. /// </summary> diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs index aa30cee26..7792a28bb 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpServer.cs @@ -529,7 +529,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer { new ClientWebSocket(); - _supportsNativeWebSocket = true; + _supportsNativeWebSocket = false; } catch (PlatformNotSupportedException) { diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs index b63cf0031..a840ae214 100644 --- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs +++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs @@ -118,43 +118,44 @@ namespace MediaBrowser.Server.Implementations.ServerManager _jsonSerializer = jsonSerializer; _applicationHost = applicationHost; ConfigurationManager = configurationManager; - - ConfigurationManager.ConfigurationUpdated += ConfigurationUpdated; } /// <summary> /// Starts this instance. /// </summary> - public void Start() + public void Start(string urlPrefix, bool enableHttpLogging) { - ReloadHttpServer(); + ReloadHttpServer(urlPrefix, enableHttpLogging); + } + public void StartWebSocketServer() + { if (!SupportsNativeWebSocket) { - ReloadExternalWebSocketServer(); + ReloadExternalWebSocketServer(ConfigurationManager.Configuration.LegacyWebSocketPortNumber); } } /// <summary> /// Starts the external web socket server. /// </summary> - private void ReloadExternalWebSocketServer() + private void ReloadExternalWebSocketServer(int portNumber) { DisposeExternalWebSocketServer(); ExternalWebSocketServer = _applicationHost.Resolve<IWebSocketServer>(); - ExternalWebSocketServer.Start(ConfigurationManager.Configuration.LegacyWebSocketPortNumber); + ExternalWebSocketServer.Start(portNumber); ExternalWebSocketServer.WebSocketConnected += HttpServer_WebSocketConnected; } /// <summary> /// Restarts the Http Server, or starts it if not currently running /// </summary> - private void ReloadHttpServer() + private void ReloadHttpServer(string urlPrefix, bool enableHttpLogging) { // Only reload if the port has changed, so that we don't disconnect any active users - if (HttpServer != null && HttpServer.UrlPrefix.Equals(_applicationHost.HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase)) + if (HttpServer != null && HttpServer.UrlPrefix.Equals(urlPrefix, StringComparison.OrdinalIgnoreCase)) { return; } @@ -166,8 +167,8 @@ namespace MediaBrowser.Server.Implementations.ServerManager try { HttpServer = _applicationHost.Resolve<IHttpServer>(); - HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging; - HttpServer.Start(_applicationHost.HttpServerUrlPrefix); + HttpServer.EnableHttpRequestLogging = enableHttpLogging; + HttpServer.Start(urlPrefix); } catch (SocketException ex) { @@ -376,17 +377,6 @@ namespace MediaBrowser.Server.Implementations.ServerManager } /// <summary> - /// Handles the ConfigurationUpdated event of the _kernel control. - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> - /// <exception cref="System.NotImplementedException"></exception> - void ConfigurationUpdated(object sender, EventArgs e) - { - HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging; - } - - /// <summary> /// Adds the web socket listeners. /// </summary> /// <param name="listeners">The listeners.</param> diff --git a/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs index 6649fd197..1470a209e 100644 --- a/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs +++ b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs @@ -55,14 +55,14 @@ namespace MediaBrowser.Server.Implementations.WebSocket /// <param name="portNumber">The port number.</param> public void Start(int portNumber) { - WebSocketServer = new WebSocketServer(portNumber, IPAddress.Any) - { - OnConnected = OnAlchemyWebSocketClientConnected, - TimeOut = TimeSpan.FromHours(12) - }; - try { + WebSocketServer = new WebSocketServer(portNumber, IPAddress.Any) + { + OnConnected = OnAlchemyWebSocketClientConnected, + TimeOut = TimeSpan.FromHours(12) + }; + WebSocketServer.Start(); } catch (SocketException ex) diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 126bea9e5..13afb41e7 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Api; +using System.Windows.Forms; +using MediaBrowser.Api; using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Constants; @@ -475,7 +476,7 @@ namespace MediaBrowser.ServerApplication { try { - ServerManager.Start(); + ServerManager.Start(HttpServerUrlPrefix, ServerConfigurationManager.Configuration.EnableHttpLevelLogging); } catch { @@ -490,6 +491,8 @@ namespace MediaBrowser.ServerApplication throw; } } + + ServerManager.StartWebSocketServer(); } /// <summary> @@ -501,6 +504,8 @@ namespace MediaBrowser.ServerApplication { base.OnConfigurationUpdated(sender, e); + HttpServer.EnableHttpRequestLogging = ServerConfigurationManager.Configuration.EnableHttpLevelLogging; + if (!string.Equals(HttpServer.UrlPrefix, HttpServerUrlPrefix, StringComparison.OrdinalIgnoreCase)) { NotifyPendingRestart(); |
