fix: 处理会话恢复后的状态监控启动
This commit is contained in:
@@ -33,7 +33,8 @@ import { handleRdpProxyConnection } from './handlers/rdp.handler';
|
||||
import {
|
||||
handleSshConnect,
|
||||
handleSshInput,
|
||||
handleSshResize
|
||||
handleSshResize,
|
||||
handleSshResumeSuccess
|
||||
} from './handlers/ssh.handler';
|
||||
import {
|
||||
handleDockerGetStatus,
|
||||
@@ -257,6 +258,9 @@ export function initializeConnectionHandler(wss: WebSocketServer, sshSuspendServ
|
||||
// console.warn(`[WebSocket Handler][${type}] WebSocket 在发送 SSH_SUSPEND_RESUMED_NOTIF 前已关闭 (会话 ${newFrontendSessionId})。`);
|
||||
}
|
||||
|
||||
// 在成功恢复并通知前端后,调用 handleSshResumeSuccess 启动状态监控
|
||||
handleSshResumeSuccess(newFrontendSessionId);
|
||||
|
||||
} else {
|
||||
// console.warn(`[WebSocket Handler][${type}] sshSuspendService.resumeSession 返回 null,无法恢复会话 ${suspendSessionId}。`);
|
||||
throw new Error('服务未能恢复会话,或会话不存在/状态不正确。');
|
||||
|
||||
@@ -251,4 +251,18 @@ export function handleSshResize(ws: AuthenticatedWebSocket, payload: any): void
|
||||
console.warn(`WebSocket: 会话 ${sessionId} 收到调整大小请求,但 Shell 尚未就绪或流不存在 (isShellReady: ${state.isShellReady})。尺寸将不会立即应用。`);
|
||||
// A more robust solution would queue the resize or store it in ClientState to be applied later.
|
||||
}
|
||||
}
|
||||
|
||||
// 处理会话恢复后的状态监控启动
|
||||
export function handleSshResumeSuccess(sessionId: string): void {
|
||||
console.log(`[状态DEBUG] [SSH Handler ${sessionId}] 会话恢复成功,准备启动状态轮询`);
|
||||
const state = clientStates.get(sessionId);
|
||||
if (state && state.sshClient) {
|
||||
statusMonitorService.startStatusPolling(sessionId);
|
||||
console.log(`[状态DEBUG] [SSH Handler ${sessionId}] 已为恢复的会话调用 startStatusPolling`);
|
||||
// 如果 Docker 状态也需要恢复,可以在这里添加
|
||||
// startDockerStatusPolling(sessionId);
|
||||
} else {
|
||||
console.error(`[状态DEBUG] [SSH Handler ${sessionId}] 无法为恢复的会话启动状态轮询:未找到会话状态或 SSH 客户端。`);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user