Browse Source

Fixed SessionWebSocketListener.OnServerManagerWebSocketConnected.

Greenback 4 years ago
parent
commit
a59aeb12e0

+ 1 - 1
Jellyfin.Api/WebSocketListeners/ActivityLogWebSocketListener.cs

@@ -58,7 +58,7 @@ namespace Jellyfin.Api.WebSocketListeners
 
         private void OnEntryCreated(object? sender, GenericEventArgs<ActivityLogEntry> e)
         {
-            SendData(true);
+            SendData(true).GetAwaiter().GetResult();
         }
     }
 }

+ 2 - 1
Jellyfin.Server/CoreAppHost.cs

@@ -82,10 +82,11 @@ namespace Jellyfin.Server
             ServiceCollection.AddSingleton<IUserManager, UserManager>();
             ServiceCollection.AddSingleton<IDisplayPreferencesManager, DisplayPreferencesManager>();
 
-            ServiceCollection.AddScoped<IWebSocketListener, SessionWebSocketListener>();
             ServiceCollection.AddScoped<IWebSocketListener, ActivityLogWebSocketListener>();
             ServiceCollection.AddScoped<IWebSocketListener, ScheduledTasksWebSocketListener>();
             ServiceCollection.AddScoped<IWebSocketListener, SessionInfoWebSocketListener>();
+            // This one has to be last as DI will select it for parameterization.
+            ServiceCollection.AddScoped<IWebSocketListener, SessionWebSocketListener>();
 
             // TODO fix circular dependency on IWebSocketManager
             ServiceCollection.AddScoped(serviceProvider => new Lazy<IEnumerable<IWebSocketListener>>(serviceProvider.GetRequiredService<IEnumerable<IWebSocketListener>>));

+ 12 - 1
Jellyfin.Server/Middleware/WebSocketHandlerMiddleware.cs

@@ -25,8 +25,19 @@ namespace Jellyfin.Server.Middleware
         /// </summary>
         /// <param name="httpContext">The current HTTP context.</param>
         /// <param name="webSocketManager">The WebSocket connection manager.</param>
+        /// <param name="websocketListener">Session manager instance.</param>
         /// <returns>The async task.</returns>
-        public async Task Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
+        public async Task Invoke(
+            HttpContext httpContext,
+            IWebSocketManager webSocketManager,
+#pragma warning disable CA1801
+#pragma warning disable IDE0060
+            // TODO: Workaround. see https://github.com/jellyfin/jellyfin/pull/3194
+            // Do not remove this parameter. It uses DI to create a SessionWebSocketListener which is
+            // required for webSocketManager events.
+            IWebSocketListener websocketListener)
+#pragma warning restore IDE0060 // Remove unused parameter
+#pragma warning restore CA1801
         {
             if (!httpContext.WebSockets.IsWebSocketRequest)
             {