Reconexão automática Blazor Serverside

8

Servidores Blazor (dotnet core 3.1)

Eu me deparo com o problema de que, do lado do cliente, isso é mostrado:

Não foi possível reconectar ao servidor. Recarregue a página para restaurar a funcionalidade.

Cada vez que eu atualizo a Base de Código ou a Internet é interrompida ou algo assim.

Agora, o objetivo é recarregar a página assim que o servidor voltar (ou em algum intervalo).

Existe alguma possibilidade / repositório do github ou algo assim que possa me ajudar?

Valeu!

baer999
fonte

Respostas:

6

Você pode tentar este código:

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

<script>
   Blazor.defaultReconnectionHandler._reconnectCallback = function(d) {
        document.location.reload(); 
   }
</script>
Sergius Sizykh
fonte
1
não funciona mais
Softlion 23/01
Quando o aplicativo depende do tempo de construção. Pode interrupções pelo tempo limite do navegador. Mas pode funcionar para implantação no site.
Sergius Sizykh
1
@ Softlion Eu testei esta solução e está funcionando. Eu adicionei a substituição do reconnectCallback ao meu _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>

Isso aguardará até que o botão recarregar seja exibido e esperará até que o servidor faça backup antes de recarregar.

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

Dan Friedman
fonte
-1

Um truque que algumas pessoas esquecem é que você pode realmente "observar" a sua base de código para alterações. Se você abrir o seu terminal favorito e executar dotnet run watch debugna mesma pasta que o seu arquivo cproj, ele deverá observar as alterações; assim, quando você atualizar o navegador, deverá escolher qualquer alteração no aplicativo, para obter mais informações, leia: https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch?view=aspnetcore-3.1

O dotnet watch é uma ferramenta que executa um comando da CLI do .NET Core quando os arquivos de origem são alterados. Por exemplo, uma alteração de arquivo pode acionar a compilação, execução de teste ou implantação.

Espero que isto ajude

Mark Davies
fonte