Blazorサーバーサイドの自動再接続


8

Blazorサーバーサイド(dotnet core 3.1)

私は顧客側でこれが表示されるという問題に遭遇しました:

サーバーに再接続できませんでした。機能を復元するには、ページを再読み込みしてください

コードベースを更新するたびに、インターネットが壊れているか、このようなものです。

現在の目標は、サーバーが再び(または一定の間隔で)復帰するとすぐにページをリロードすることです。

可能性はありますか/ github repoまたはこのような何かが私を助けることができますか?

THX!

回答:


6

あなたはこのコードを試すことができます:

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

<script>
   Blazor.defaultReconnectionHandler._reconnectCallback = function(d) {
        document.location.reload(); 
   }
</script>

1
機能しなくなりました
Softlion

アプリケーションがビルド時間に依存する場合。ブラウザのタイムアウトにより中断する可能性があります。しかし、サイトへの展開には機能します。
Sergius Sizykh

1
@Softlion私はこのソリューションをテストしましたが、機能しています。reconnectCallbackのオーバーライドを_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>

これは、再読み込みボタンが表示されるまで待機し、実際に再読み込みする前にサーバーがバックアップされるまで待機します。

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


-1

一部の人々が忘れている1つのトリックは、変更をコードベースで実際に「監視」できることです。お気に入りのターミナルを開いdotnet run watch debugてcprojファイルと同じフォルダーで実行すると、変更を監視するため、ブラウザーを更新すると選択するはずです。アプリケーションの変更をすべて確認します。詳細については、https://docs.microsoft.com/en-us/aspnet/core/tutorials/dotnet-watch?view = aspnetcore-3.1をご覧ください。

dotnet watchは、ソースファイルが変更されたときに.NET Core CLIコマンドを実行するツールです。たとえば、ファイルの変更により、コンパイル、テストの実行、またはデプロイメントがトリガーされます。

お役に立てれば

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.