Auto reconectar Blazor Serverside

8

Blazor serveride (dotnet core 3.1)

Me encuentro con el problema de que en el lado del cliente esto se muestra:

No se pudo volver a conectar al servidor. Vuelva a cargar la página para restaurar la funcionalidad.

Cada vez que actualizo el Codebase o Internet está roto o algo así.

Ahora el objetivo es que debería volver a cargar la página tan pronto como el servidor vuelva a funcionar (o en algún intervalo).

¿Hay alguna posibilidad / repositorio github o algo como esto que pueda ayudarme?

¡Gracias!

baer999
fuente

Respuestas:

6

Puedes probar este código:

<script src="_framework/blazor.server.js"></script>

<script>
   Blazor.defaultReconnectionHandler._reconnectCallback = function(d) {
        document.location.reload(); 
   }
</script>
Sergio Sizykh
fuente
1
ya no funciona
Softlion
Cuando la aplicación depende del tiempo de construcción. Se puede romper por tiempo de espera del navegador. Pero puede funcionar para la implementación en el sitio.
Sergio Sizykh
1
@Softlion Probé esta solución y está funcionando. Agregué el reemplazo de reconectCallback a mi _Host.cshtml
Vortex852456
1
<script>
    // Wait until a 'reload' button appears
    new MutationObserver((mutations, observer) => {
        if (document.querySelector('#components-reconnect-modal h5 a')) {
            // Now every 10 seconds, see if the server appears to be back, and if so, reload
            async function attemptReload() {
                await fetch(''); // Check the server really is back
                location.reload();
            }
            observer.disconnect();
            attemptReload();
            setInterval(attemptReload, 10000);
        }
    }).observe(document.body, { childList: true, subtree: true });
</script>

Esto esperará hasta que aparezca el botón de recarga y luego esperará hasta que el servidor vuelva a funcionar antes de volver a cargar.

Desde https://github.com/dotnet/aspnetcore/issues/10325#issuecomment-537979717

Dan Friedman
fuente
-1

Un truco que algunas personas olvidan es que en realidad puedes "mirar" la base de tu código para ver los cambios, si abres tu terminal favorita y la ejecutas dotnet run watch debugen la misma carpeta que tu archivo cproj, debería ver tus cambios, así que cuando actualices tu navegador debería elegir hasta cualquier cambio en su aplicación, para más información lea: https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch?view=aspnetcore-3.1

dotnet watch es una herramienta que ejecuta un comando .NET Core CLI cuando cambian los archivos fuente. Por ejemplo, un cambio de archivo puede desencadenar la compilación, la ejecución de la prueba o la implementación.

Espero que esto ayude

Mark Davies
fuente