/
rezvich
/
BlazorMatchGame
Обзор
Документация
Войти
/
rezvich
/
BlazorMatchGame
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Components/Layout/ReconnectModal.razor.js
63 строки
2 KB
ItsEnd
first_commit
27 дек 2025, 12:40
27 дек 2025, 12:40
10ac941
Код
Авторство
О чём код?
// Set up event handlers const reconnectModal = document.getElementById("components-reconnect-modal"); reconnectModal.addEventListener("components-reconnect-state-changed", handleReconnectStateChanged); const retryButton = document.getElementById("components-reconnect-button"); retryButton.addEventListener("click", retry); const resumeButton = document.getElementById("components-resume-button"); resumeButton.addEventListener("click", resume); function handleReconnectStateChanged(event) { if (event.detail.state === "show") { reconnectModal.showModal(); } else if (event.detail.state === "hide") { reconnectModal.close(); } else if (event.detail.state === "failed") { document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible); } else if (event.detail.state === "rejected") { location.reload(); } } async function retry() { document.removeEventListener("visibilitychange", retryWhenDocumentBecomesVisible); try { // Reconnect will asynchronously return: // - true to mean success // - false to mean we reached the server, but it rejected the connection (e.g., unknown circuit ID) // - exception to mean we didn't reach the server (this can be sync or async) const successful = await Blazor.reconnect(); if (!successful) { // We have been able to reach the server, but the circuit is no longer available. // We'll reload the page so the user can continue using the app as quickly as possible. const resumeSuccessful = await Blazor.resumeCircuit(); if (!resumeSuccessful) { location.reload(); } else { reconnectModal.close(); } } } catch (err) { // We got an exception, server is currently unavailable document.addEventListener("visibilitychange", retryWhenDocumentBecomesVisible); } } async function resume() { try { const successful = await Blazor.resumeCircuit(); if (!successful) { location.reload(); } } catch { location.reload(); } } async function retryWhenDocumentBecomesVisible() { if (document.visibilityState === "visible") { await retry(); } }