Blazor Serverside automatisch wieder verbinden

8

Blazor-Serverseite (Dotnet Core 3.1)

Ich stoße auf das Problem, dass dies auf Kundenseite gezeigt wird:

Verbindung zum Server konnte nicht hergestellt werden. Laden Sie die Seite neu , um die Funktionalität wiederherzustellen.

Jedes Mal, wenn ich die Codebasis aktualisiere, ist das Internet kaputt oder so.

Das Ziel ist nun, dass die Seite neu geladen wird, sobald der Server wieder verfügbar ist (oder in einem bestimmten Intervall).

Gibt es eine Möglichkeit / ein Github-Repo oder ähnliches, das mir helfen könnte?

Danke!

baer999
quelle

Antworten:

6

Sie können diesen Code ausprobieren:

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

<script>
   Blazor.defaultReconnectionHandler._reconnectCallback = function(d) {
        document.location.reload(); 
   }
</script>
Sergius Sizykh
quelle
1
funktioniert nicht mehr
Softlion
Wann die Anwendung von der Erstellungszeit abhängt. Kann durch Browser-Timeout unterbrochen werden. Kann aber für die Bereitstellung vor Ort arbeiten.
Sergius Sizykh
1
@ Softlion Ich habe diese Lösung getestet und sie funktioniert. Ich habe die Überschreibung des reconnectCallback zu meiner _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>

Dies wartet, bis die Schaltfläche zum erneuten Laden angezeigt wird, und wartet dann, bis der Server wieder hochgefahren ist, bevor das eigentliche Neuladen erfolgt.

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

Dan Friedman
quelle
-1

Ein Trick, den manche Leute vergessen, ist, dass Sie Ihre Codebasis tatsächlich auf Änderungen "überwachen" können. Wenn Sie Ihr bevorzugtes Terminal öffnen und dotnet run watch debugim selben Ordner wie Ihre cproj-Datei ausführen, sollte es Ihre Änderungen überwachen. Wenn Sie also Ihren Browser aktualisieren, sollte es ausgewählt werden Informationen zu Änderungen an Ihrer Anwendung finden Sie unter: https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch?view=aspnetcore-3.1

dotnet watch ist ein Tool, das einen .NET Core CLI-Befehl ausführt, wenn sich Quelldateien ändern. Beispielsweise kann eine Dateiänderung die Kompilierung, Testausführung oder Bereitstellung auslösen.

Hoffe das hilft

Mark Davies
quelle