fix: 배포 중 화면 유지와 자동 재연결 적용
정상 DEPLOY 중에는 기존 정적 프론트엔드를 유지하고 새 artifact 준비 후 전환합니다. 게임 화면은 일시적인 gateway 오류를 별도 상태로 표시하고 읽기 전용 probe로 제한적으로 복구합니다.
This commit is contained in:
@@ -22,6 +22,7 @@ import { createBroadcastTabCoordinator, type BroadcastTabCoordinator } from '../
|
||||
import { resolveWithReadModelSnapshotFallback } from '../utils/readModelDeltaRecovery';
|
||||
import { createRealtimeRequestOptions } from '../utils/realtimeAccessGrant';
|
||||
import { markGameServerContact } from '../utils/gameServerActivity';
|
||||
import { GAME_SERVER_RECONNECTED_EVENT } from '../utils/gameServerConnection';
|
||||
import { gameFrontendRuntimeConfig } from '../config/runtimeConfig';
|
||||
|
||||
const REALTIME_FULL_REFRESH_MIN_INTERVAL_MS = 5_000;
|
||||
@@ -1261,12 +1262,19 @@ export const useMainDashboardStore = defineStore('mainDashboard', () => {
|
||||
void refreshQueue.request().finally(() => reconcileRealtimeCoordinator());
|
||||
};
|
||||
|
||||
const handleGameServerReconnected = () => {
|
||||
if (!realtimeActive.value || document.visibilityState === 'hidden') return;
|
||||
realtimeRefreshQueue.beginCooldown();
|
||||
void refreshQueue.request().finally(() => reconcileRealtimeCoordinator());
|
||||
};
|
||||
|
||||
const startRealtime = () => {
|
||||
if (typeof window === 'undefined' || realtimeActive.value) return;
|
||||
realtimeActive.value = true;
|
||||
realtimeRefreshQueue.beginCooldown();
|
||||
if (!visibilityListenerInstalled) {
|
||||
document.addEventListener('visibilitychange', handleVisibilityChange);
|
||||
window.addEventListener(GAME_SERVER_RECONNECTED_EVENT, handleGameServerReconnected);
|
||||
visibilityListenerInstalled = true;
|
||||
}
|
||||
reconcileRealtimeCoordinator();
|
||||
@@ -1279,6 +1287,7 @@ export const useMainDashboardStore = defineStore('mainDashboard', () => {
|
||||
closeRealtimeCoordinator();
|
||||
if (visibilityListenerInstalled) {
|
||||
document.removeEventListener('visibilitychange', handleVisibilityChange);
|
||||
window.removeEventListener(GAME_SERVER_RECONNECTED_EVENT, handleGameServerReconnected);
|
||||
visibilityListenerInstalled = false;
|
||||
}
|
||||
realtimeStatus.value = realtimeEnabled.value ? 'idle' : 'paused';
|
||||
|
||||
Reference in New Issue
Block a user