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 客户端。`);
|
||||
}
|
||||
}
|
||||
@@ -239,58 +239,47 @@ const { t } = useI18n();
|
||||
|
||||
const {
|
||||
popupEditorEnabled,
|
||||
// popupEditorLoading, // Not directly used by template if button has its own loading state management
|
||||
popupEditorMessage,
|
||||
popupEditorSuccess,
|
||||
handleUpdatePopupEditorSetting,
|
||||
shareTabsEnabled,
|
||||
// shareTabsLoading,
|
||||
shareTabsMessage,
|
||||
shareTabsSuccess,
|
||||
handleUpdateShareTabsSetting,
|
||||
autoCopyEnabled,
|
||||
// autoCopyLoading,
|
||||
autoCopyMessage,
|
||||
autoCopySuccess,
|
||||
handleUpdateAutoCopySetting,
|
||||
workspaceSidebarPersistentEnabled,
|
||||
// workspaceSidebarPersistentLoading,
|
||||
workspaceSidebarPersistentMessage,
|
||||
workspaceSidebarPersistentSuccess,
|
||||
handleUpdateWorkspaceSidebarSetting,
|
||||
commandInputSyncTargetLocal,
|
||||
// commandInputSyncLoading,
|
||||
commandInputSyncMessage,
|
||||
commandInputSyncSuccess,
|
||||
handleUpdateCommandInputSyncTarget,
|
||||
showConnectionTagsLocal,
|
||||
// showConnectionTagsLoading,
|
||||
showConnectionTagsMessage,
|
||||
showConnectionTagsSuccess,
|
||||
handleUpdateShowConnectionTags,
|
||||
showQuickCommandTagsLocal,
|
||||
// showQuickCommandTagsLoading,
|
||||
showQuickCommandTagsMessage,
|
||||
showQuickCommandTagsSuccess,
|
||||
handleUpdateShowQuickCommandTags,
|
||||
terminalScrollbackLimitLocal,
|
||||
// terminalScrollbackLimitLoading,
|
||||
terminalScrollbackLimitMessage,
|
||||
terminalScrollbackLimitSuccess,
|
||||
handleUpdateTerminalScrollbackLimit,
|
||||
fileManagerShowDeleteConfirmationLocal,
|
||||
// fileManagerShowDeleteConfirmationLoading,
|
||||
fileManagerShowDeleteConfirmationMessage,
|
||||
fileManagerShowDeleteConfirmationSuccess,
|
||||
handleUpdateFileManagerDeleteConfirmation,
|
||||
terminalEnableRightClickPasteLocal, // NEW
|
||||
terminalEnableRightClickPasteLoading, // NEW (Not used in template, but available)
|
||||
terminalEnableRightClickPasteMessage, // NEW
|
||||
terminalEnableRightClickPasteSuccess, // NEW
|
||||
handleUpdateTerminalRightClickPasteSetting, // NEW
|
||||
// Popup File Manager
|
||||
terminalEnableRightClickPasteLocal,
|
||||
terminalEnableRightClickPasteLoading,
|
||||
terminalEnableRightClickPasteMessage,
|
||||
terminalEnableRightClickPasteSuccess,
|
||||
handleUpdateTerminalRightClickPasteSetting,
|
||||
showPopupFileManagerLocal,
|
||||
// showPopupFileManagerLoading, // Not used
|
||||
showPopupFileManagerMessage,
|
||||
showPopupFileManagerSuccess,
|
||||
handleUpdateShowPopupFileManager,
|
||||
|
||||
@@ -17,7 +17,7 @@ export function useWorkspaceSettings() {
|
||||
showQuickCommandTagsBoolean,
|
||||
terminalScrollbackLimitNumber,
|
||||
fileManagerShowDeleteConfirmationBoolean,
|
||||
terminalEnableRightClickPasteBoolean, // NEW
|
||||
terminalEnableRightClickPasteBoolean,
|
||||
showPopupFileManagerBoolean, // +++ Import the new getter +++
|
||||
} = storeToRefs(settingsStore);
|
||||
|
||||
@@ -296,7 +296,7 @@ export function useWorkspaceSettings() {
|
||||
watch(showQuickCommandTagsBoolean, (newValue) => { showQuickCommandTagsLocal.value = newValue; }, { immediate: true });
|
||||
watch(terminalScrollbackLimitNumber, (newValue) => { terminalScrollbackLimitLocal.value = newValue; }, { immediate: true });
|
||||
watch(fileManagerShowDeleteConfirmationBoolean, (newValue) => { fileManagerShowDeleteConfirmationLocal.value = newValue; }, { immediate: true });
|
||||
watch(terminalEnableRightClickPasteBoolean, (newValue) => { terminalEnableRightClickPasteLocal.value = newValue; }, { immediate: true }); // NEW
|
||||
watch(terminalEnableRightClickPasteBoolean, (newValue) => { terminalEnableRightClickPasteLocal.value = newValue; }, { immediate: true });
|
||||
watch(showPopupFileManagerBoolean, (newValue) => { showPopupFileManagerLocal.value = newValue; }, { immediate: true }); // +++ Watch for popup file manager +++
|
||||
|
||||
|
||||
@@ -355,11 +355,11 @@ export function useWorkspaceSettings() {
|
||||
fileManagerShowDeleteConfirmationSuccess,
|
||||
handleUpdateFileManagerDeleteConfirmation,
|
||||
|
||||
terminalEnableRightClickPasteLocal, // NEW
|
||||
terminalEnableRightClickPasteLoading, // NEW
|
||||
terminalEnableRightClickPasteMessage, // NEW
|
||||
terminalEnableRightClickPasteSuccess, // NEW
|
||||
handleUpdateTerminalRightClickPasteSetting, // NEW
|
||||
terminalEnableRightClickPasteLocal,
|
||||
terminalEnableRightClickPasteLoading,
|
||||
terminalEnableRightClickPasteMessage,
|
||||
terminalEnableRightClickPasteSuccess,
|
||||
handleUpdateTerminalRightClickPasteSetting,
|
||||
|
||||
// Popup File Manager
|
||||
showPopupFileManagerLocal,
|
||||
|
||||
@@ -391,12 +391,12 @@ export const useSettingsStore = defineStore('settings', () => {
|
||||
'ipBlacklistEnabled',
|
||||
'dashboardSortBy',
|
||||
'dashboardSortOrder',
|
||||
'showConnectionTags', // NEW
|
||||
'showQuickCommandTags', // NEW
|
||||
'layoutLocked', // NEW
|
||||
'terminalScrollbackLimit', // NEW
|
||||
'fileManagerShowDeleteConfirmation', // NEW
|
||||
'terminalEnableRightClickPaste' // NEW
|
||||
'showConnectionTags',
|
||||
'showQuickCommandTags',
|
||||
'layoutLocked',
|
||||
'terminalScrollbackLimit',
|
||||
'fileManagerShowDeleteConfirmation',
|
||||
'terminalEnableRightClickPaste'
|
||||
];
|
||||
if (!allowedKeys.includes(key)) {
|
||||
console.error(`[SettingsStore] 尝试更新不允许的设置键: ${key}`);
|
||||
@@ -486,12 +486,12 @@ export const useSettingsStore = defineStore('settings', () => {
|
||||
'ipBlacklistEnabled',
|
||||
'dashboardSortBy',
|
||||
'dashboardSortOrder',
|
||||
'showConnectionTags', // NEW
|
||||
'showQuickCommandTags', // NEW
|
||||
'layoutLocked', // NEW
|
||||
'terminalScrollbackLimit', // NEW
|
||||
'fileManagerShowDeleteConfirmation', // NEW
|
||||
'terminalEnableRightClickPaste' // NEW
|
||||
'showConnectionTags',
|
||||
'showQuickCommandTags',
|
||||
'layoutLocked',
|
||||
'terminalScrollbackLimit',
|
||||
'fileManagerShowDeleteConfirmation',
|
||||
'terminalEnableRightClickPaste'
|
||||
];
|
||||
const filteredUpdates: Partial<SettingsState> = {};
|
||||
let languageUpdate: string | undefined = undefined;
|
||||
|
||||
Reference in New Issue
Block a user