perf(websocket): Fix scope leak and add adaptive polling

This commit is contained in:
destrodxbad 2025-11-18 02:01:41 +01:00
parent 371a13e060
commit a7bb8da1d5

View file

@ -14,14 +14,15 @@ public class WebsocketsUpdater(ILogger<WebsocketsUpdater> logger, IServiceProvid
await Task.Delay(1000, stoppingToken); await Task.Delay(1000, stoppingToken);
} }
var scope = serviceProvider.CreateScope(); logger.LogInformation("WebsocketsUpdater started.");
var remoteService = scope.ServiceProvider.GetRequiredService<RemoteService>();
while (!stoppingToken.IsCancellationRequested) while (!stoppingToken.IsCancellationRequested)
{ {
try try
{ {
using var scope = serviceProvider.CreateScope();
var remoteService = scope.ServiceProvider.GetRequiredService<RemoteService>();
await remoteService.Update(); await remoteService.Update();
} }
catch (Exception ex) catch (Exception ex)
@ -29,7 +30,11 @@ public class WebsocketsUpdater(ILogger<WebsocketsUpdater> logger, IServiceProvid
logger.LogError(ex, $"Unexpected error occurred in WebsocketsUpdater: {ex.Message}"); 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."); logger.LogInformation("WebsocketsUpdater stopped.");