This commit is contained in:
dengqichen 2025-12-30 16:28:24 +08:00
parent 3d6ca74fed
commit 70e6e0cac6
4 changed files with 35 additions and 35 deletions

View File

@ -24,7 +24,7 @@ export const LogStreamViewer: React.FC<LogStreamViewerProps> = ({
// 注册日志接收回调
useEffect(() => {
console.log('[LogStreamViewer] useEffect triggered, connecting...');
if (import.meta.env.DEV) console.log('[LogStreamViewer] useEffect triggered, connecting...');
dataSource.onLog((logText) => {
if (logViewerApiRef.current) {
@ -41,7 +41,7 @@ export const LogStreamViewer: React.FC<LogStreamViewerProps> = ({
dataSource.connect();
return () => {
console.log('[LogStreamViewer] useEffect cleanup, disconnecting...');
if (import.meta.env.DEV) console.log('[LogStreamViewer] useEffect cleanup, disconnecting...');
dataSource.cleanup();
};
}, [dataSource]);
@ -70,7 +70,7 @@ export const LogStreamViewer: React.FC<LogStreamViewerProps> = ({
// CONNECTING状态下不显示错误可能是临时的连接问题
const shouldShowError = error && !isConnecting;
console.log('[LogStreamViewer] Render - status:', currentStatus, 'error:', error, 'shouldShowError:', shouldShowError, 'isConnecting:', isConnecting);
if (import.meta.env.DEV) console.log('[LogStreamViewer] Render - status:', currentStatus, 'error:', error, 'shouldShowError:', shouldShowError, 'isConnecting:', isConnecting);
return (
<div className={`flex flex-col h-full relative ${className}`}>

View File

@ -22,10 +22,10 @@ export class WebSocketLogSource implements LogDataSource {
}
connect(): void {
console.log('[WebSocketLogSource] connect() called, current readyState:', this.ws?.readyState);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] connect() called, current readyState:', this.ws?.readyState);
if (this.ws?.readyState === WebSocket.OPEN) {
console.log('[WebSocketLogSource] Already connected, skipping');
if (import.meta.env.DEV) console.log('[WebSocketLogSource] Already connected, skipping');
return;
}
@ -37,12 +37,12 @@ export class WebSocketLogSource implements LogDataSource {
this.isManualDisconnect = false;
try {
console.log('[WebSocketLogSource] Creating new WebSocket:', this.config.url);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] Creating new WebSocket:', this.config.url);
this.ws = new WebSocket(this.config.url);
console.log('[WebSocketLogSource] WebSocket created, readyState:', this.ws.readyState);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] WebSocket created, readyState:', this.ws.readyState);
this.ws.onopen = () => {
console.log('[WebSocketLogSource] onopen triggered! readyState:', this.ws?.readyState);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] onopen triggered! readyState:', this.ws?.readyState);
this.reconnectAttempts = 0;
this.hasConnected = true;
this.updateStatus(LogStreamStatus.CONNECTED);
@ -55,7 +55,7 @@ export class WebSocketLogSource implements LogDataSource {
// 处理 STATUS 消息
if (message.type === 'STATUS' && message.data?.response?.status) {
const newStatus = message.data.response.status as LogStreamStatus;
console.log('[WebSocketLogSource] Received STATUS:', newStatus);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] Received STATUS:', newStatus);
this.updateStatus(newStatus);
return;
}
@ -85,7 +85,7 @@ export class WebSocketLogSource implements LogDataSource {
};
this.ws.onclose = (event) => {
console.log('[WebSocketLogSource] onclose triggered, code:', event.code, 'reason:', event.reason);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] onclose triggered, code:', event.code, 'reason:', event.reason);
if (event.code === 1006) {
this.updateError('无法连接到服务器,请检查网络连接');
@ -110,12 +110,12 @@ export class WebSocketLogSource implements LogDataSource {
}
disconnect(): void {
console.log('[WebSocketLogSource] disconnect() called');
if (import.meta.env.DEV) console.log('[WebSocketLogSource] disconnect() called');
this.isManualDisconnect = true;
this.clearReconnectTimer();
if (this.ws) {
console.log('[WebSocketLogSource] Closing WebSocket, readyState:', this.ws.readyState);
if (import.meta.env.DEV) console.log('[WebSocketLogSource] Closing WebSocket, readyState:', this.ws.readyState);
this.ws.close();
this.ws = null;
}
@ -154,7 +154,7 @@ export class WebSocketLogSource implements LogDataSource {
}
cleanup(): void {
console.log('[WebSocketLogSource] cleanup() called');
if (import.meta.env.DEV) console.log('[WebSocketLogSource] cleanup() called');
this.disconnect();
this.logCallback = null;
this.statusCallback = null;

View File

@ -79,12 +79,12 @@ export function TerminalWindowManager<TResource = any>({
setActiveWindowId(windowId);
onOpenWindow?.(windowId);
console.log(`✅ 打开${type.toUpperCase()}窗口: ${getWindowTitle(resource)} (${windowId})`);
if (import.meta.env.DEV) console.log(`✅ 打开${type.toUpperCase()}窗口: ${getWindowTitle(resource)} (${windowId})`);
}, [windows.length, type, getWindowTitle, getResourceId, onOpenWindow]);
// 真正关闭窗口
const actuallyCloseWindow = useCallback((windowId: string) => {
console.log(`❌ 真正关闭窗口: ${windowId}`);
if (import.meta.env.DEV) console.log(`❌ 真正关闭窗口: ${windowId}`);
setWindows(prev => prev.filter(w => w.id !== windowId));
if (activeWindowId === windowId) {
setActiveWindowId(null);
@ -93,15 +93,15 @@ export function TerminalWindowManager<TResource = any>({
// 关闭窗口(优雅关闭)
const closeWindow = useCallback((windowId: string) => {
console.log(`🚪 准备关闭窗口: ${windowId}`);
if (import.meta.env.DEV) console.log(`🚪 准备关闭窗口: ${windowId}`);
// 调用优雅关闭方法
const closeMethod = (window as any)[`__closeSSH_${windowId}`];
if (closeMethod && typeof closeMethod === 'function') {
console.log('✅ 调用优雅关闭方法');
if (import.meta.env.DEV) console.log('✅ 调用优雅关闭方法');
closeMethod();
} else {
console.warn('⚠️ 未找到优雅关闭方法,直接关闭窗口');
if (import.meta.env.DEV) console.warn('⚠️ 未找到优雅关闭方法,直接关闭窗口');
actuallyCloseWindow(windowId);
}
}, [actuallyCloseWindow]);
@ -113,7 +113,7 @@ export function TerminalWindowManager<TResource = any>({
w.id === windowId ? { ...w, isMinimized: true } : w
)
);
console.log(` 最小化窗口: ${windowId}`);
if (import.meta.env.DEV) console.log(` 最小化窗口: ${windowId}`);
}, []);
// 恢复窗口
@ -124,7 +124,7 @@ export function TerminalWindowManager<TResource = any>({
)
);
setActiveWindowId(windowId);
console.log(`⬆️ 恢复窗口: ${windowId}`);
if (import.meta.env.DEV) console.log(`⬆️ 恢复窗口: ${windowId}`);
// 触发resize事件确保终端正确调整尺寸
// 延迟100ms等待DOM更新完成
@ -186,7 +186,7 @@ export function TerminalWindowManager<TResource = any>({
const globalKey = `__open${typeName}Window`;
(window as any)[globalKey] = openWindow;
console.log(`✅ 注册全局方法: ${globalKey}`);
if (import.meta.env.DEV) console.log(`✅ 注册全局方法: ${globalKey}`);
return () => {
delete (window as any)[globalKey];

View File

@ -165,9 +165,9 @@ const LogViewerContent: React.FC<{
// 控制按钮处理函数
const handleStart = useCallback(() => {
console.log('[LogWindowManager] handleStart called, controlApiRef:', !!controlApiRef.current);
if (import.meta.env.DEV) console.log('[LogWindowManager] handleStart called, controlApiRef:', !!controlApiRef.current);
if (!controlApiRef.current) {
console.log('[LogWindowManager] controlApiRef is null, cannot send START');
if (import.meta.env.DEV) console.log('[LogWindowManager] controlApiRef is null, cannot send START');
return;
}
@ -183,7 +183,7 @@ const LogViewerContent: React.FC<{
},
};
console.log('[LogWindowManager] Sending START message:', startMessage);
if (import.meta.env.DEV) console.log('[LogWindowManager] Sending START message:', startMessage);
controlApiRef.current.send(JSON.stringify(startMessage));
setStatus(LogStreamStatus.STREAMING);
}, [lines, app.runtimeType, podName]);
@ -212,7 +212,7 @@ const LogViewerContent: React.FC<{
return;
}
console.log('[LogWindowManager] Pod changed from', prevPodNameRef.current, 'to', podName, '- restarting stream');
if (import.meta.env.DEV) console.log('[LogWindowManager] Pod changed from', prevPodNameRef.current, 'to', podName, '- restarting stream');
// 更新引用
prevPodNameRef.current = podName;
@ -241,7 +241,7 @@ const LogViewerContent: React.FC<{
},
},
};
console.log('[LogWindowManager] Sending START with new pod:', startMessage);
if (import.meta.env.DEV) console.log('[LogWindowManager] Sending START with new pod:', startMessage);
controlApiRef.current.send(JSON.stringify(startMessage));
setStatus(LogStreamStatus.STREAMING);
}
@ -251,7 +251,7 @@ const LogViewerContent: React.FC<{
// 创建WebSocket数据源
const dataSource = useMemo(() => {
console.log('[LogWindowManager] Creating new dataSource for app:', app.teamApplicationId, app.runtimeType);
if (import.meta.env.DEV) console.log('[LogWindowManager] Creating new dataSource for app:', app.teamApplicationId, app.runtimeType);
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
const host = window.location.host;
@ -283,19 +283,19 @@ const LogViewerContent: React.FC<{
// 注册状态变化回调
source.onStatusChange((newStatus) => {
console.log('[LogWindowManager] Status changed to:', newStatus);
if (import.meta.env.DEV) console.log('[LogWindowManager] Status changed to:', newStatus);
setStatus(newStatus);
// 收到CONNECTED状态后自动发送START消息
if (newStatus === LogStreamStatus.CONNECTED) {
// K8S应用需要等待Pod列表加载完成
if (app.runtimeType === 'K8S' && loadingPodsRef.current) {
console.log('[LogWindowManager] K8S waiting for pods, skip START');
if (import.meta.env.DEV) console.log('[LogWindowManager] K8S waiting for pods, skip START');
return;
}
// 延迟发送START消息确保controlApiRef已设置
console.log('[LogWindowManager] CONNECTED received, sending START in 100ms...');
if (import.meta.env.DEV) console.log('[LogWindowManager] CONNECTED received, sending START in 100ms...');
setTimeout(() => {
handleStartRef.current?.();
}, 100);
@ -614,22 +614,22 @@ const LogViewerContent: React.FC<{
// API就绪后检查连接状态并自动启动
const currentStatus = controlApi.getStatus();
console.log('[LogWindowManager] onReady triggered, status:', currentStatus, 'runtimeType:', app.runtimeType);
if (import.meta.env.DEV) console.log('[LogWindowManager] onReady triggered, status:', currentStatus, 'runtimeType:', app.runtimeType);
if (currentStatus === LogStreamStatus.CONNECTED) {
// K8S应用需要等待Pod列表加载完成
if (app.runtimeType === 'K8S' && loadingPodsRef.current) {
console.log('[LogWindowManager] K8S waiting for pods, skip START');
if (import.meta.env.DEV) console.log('[LogWindowManager] K8S waiting for pods, skip START');
return;
}
// 自动发送START消息
console.log('[LogWindowManager] Sending START message in 100ms...');
if (import.meta.env.DEV) console.log('[LogWindowManager] Sending START message in 100ms...');
setTimeout(() => {
console.log('[LogWindowManager] Calling handleStart');
if (import.meta.env.DEV) console.log('[LogWindowManager] Calling handleStart');
handleStartRef.current?.();
}, 100);
} else {
console.log('[LogWindowManager] Status is not CONNECTED, current:', currentStatus);
if (import.meta.env.DEV) console.log('[LogWindowManager] Status is not CONNECTED, current:', currentStatus);
}
}}
className="flex-1"