()
| 2581 | // ============== 页面可见性重连机制 ============== |
| 2582 | |
| 2583 | function initVisibilityReconnect() { |
| 2584 | document.addEventListener('visibilitychange', () => { |
| 2585 | if (document.visibilityState !== 'visible') return; |
| 2586 | |
| 2587 | // 页面重新可见时,检查是否需要重连(针对同页面标签切换场景) |
| 2588 | const wsDisconnected = !webSocket || webSocket.readyState === WebSocket.CLOSED; |
| 2589 | const batchWsDisconnected = !batchWebSocket || batchWebSocket.readyState === WebSocket.CLOSED; |
| 2590 | |
| 2591 | // 单任务重连 |
| 2592 | if (activeTaskUuid && !taskCompleted && wsDisconnected) { |
| 2593 | console.log('[重连] 页面重新可见,重连单任务 WebSocket:', activeTaskUuid); |
| 2594 | addLog('info', '[系统] 页面重新激活,正在重连任务监控...'); |
| 2595 | connectWebSocket(activeTaskUuid); |
| 2596 | } |
| 2597 | |
| 2598 | // 批量任务重连 |
| 2599 | if (activeBatchId && !batchCompleted && batchWsDisconnected) { |
| 2600 | console.log('[重连] 页面重新可见,重连批量任务 WebSocket:', activeBatchId); |
| 2601 | addLog('info', '[系统] 页面重新激活,正在重连批量任务监控...'); |
| 2602 | connectBatchWebSocket(activeBatchId); |
| 2603 | } |
| 2604 | |
| 2605 | if (isAutoMode && !autoMonitorPollingInterval) { |
| 2606 | addLog('info', '[系统] 页面重新激活,正在恢复自动注册监控...'); |
| 2607 | startAutoRegistrationMonitor(); |
| 2608 | } |
| 2609 | }); |
| 2610 | } |
| 2611 | |
| 2612 | // 页面加载时恢复进行中的任务(处理跨页面导航后回到注册页的情况) |
| 2613 | async function restoreActiveTask() { |
no test coverage detected