From a7bb8da1d5f030b4d1af7b784e768d0943dd191b Mon Sep 17 00:00:00 2001 From: destrodxbad Date: Tue, 18 Nov 2025 02:01:41 +0100 Subject: [PATCH] perf(websocket): Fix scope leak and add adaptive polling --- .../BackgroundServices/WebsocketsUpdater.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/server/RdtClient.Service/BackgroundServices/WebsocketsUpdater.cs b/server/RdtClient.Service/BackgroundServices/WebsocketsUpdater.cs index 10237d4..d466b8e 100644 --- a/server/RdtClient.Service/BackgroundServices/WebsocketsUpdater.cs +++ b/server/RdtClient.Service/BackgroundServices/WebsocketsUpdater.cs @@ -14,14 +14,15 @@ public class WebsocketsUpdater(ILogger logger, IServiceProvid await Task.Delay(1000, stoppingToken); } - var scope = serviceProvider.CreateScope(); - - var remoteService = scope.ServiceProvider.GetRequiredService(); + logger.LogInformation("WebsocketsUpdater started."); while (!stoppingToken.IsCancellationRequested) { try { + using var scope = serviceProvider.CreateScope(); + var remoteService = scope.ServiceProvider.GetRequiredService(); + await remoteService.Update(); } catch (Exception ex) @@ -29,7 +30,11 @@ public class WebsocketsUpdater(ILogger logger, IServiceProvid logger.LogError(ex, $"Unexpected error occurred in WebsocketsUpdater: {ex.Message}"); } - await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken); + var delay = RdtHub.HasConnections + ? TimeSpan.FromSeconds(1) + : TimeSpan.FromSeconds(5); + + await Task.Delay(delay, stoppingToken); } logger.LogInformation("WebsocketsUpdater stopped.");