Estoy usando SignalR para la comunicación entre un frontend de Vue.js y un backend de dotnet.
Cuando pones en segundo plano la pestaña de la interfaz después de una cantidad de tiempo (aparentemente aleatoria), la conexión se desconecta. Debido a que estoy usando la reconexión automática, el zócalo se vuelve a conectar, pero luego, hasta que la pestaña se vuelva a enfocar, el zócalo continuará desconectándose cada dos minutos y lo colocará en un bucle de reconexión.
Unas pocas cosas:
El código del lado del cliente es extremadamente básico:
this.connection = new HubConnectionBuilder() .withUrl(this.url) .withAutomaticReconnect() .build()El código del lado del servidor es igualmente básico:
public override async Task OnConnectedAsync() { //Create client code here await base.OnConnectedAsync(); } public override async Task OnDisconnectedAsync(Exception exception) { if(exception != null) _logger.LogErrorToFile(exception.Message); _logger.LogInformationToFile($"Client with id: {GetConnectionId()} disconnected.{GetUsername()}"); await base.OnDisconnectedAsync(exception); }Chrome realizó una actualización a principios de este año que detiene las conexiones cuando no están enfocadas después de unos 5 minutos. El problema/solución que comentó Nirbhay es en realidad para la versión ASP.NET (2.4.2) y no es compatible con .NET CORE. Este es el problema que se planteó para .NET CORE: github.com/dotnet/aspnetcore/issues/31079