diff --git a/src/services/socketService.js b/src/services/socketService.js index e1cdbd07..3203f923 100644 --- a/src/services/socketService.js +++ b/src/services/socketService.js @@ -16,6 +16,7 @@ class SocketService { this.reconnectAttempts = 0; this.maxReconnectAttempts = Infinity; // 无限重试 this.customReconnectTimer = null; // 自定义重连定时器 + this.pendingListeners = []; // 暂存等待注册的事件监听器 } /** @@ -50,6 +51,15 @@ class SocketService { ...options, }); + // 注册所有暂存的事件监听器 + if (this.pendingListeners.length > 0) { + console.log(`[socketService] 📦 注册 ${this.pendingListeners.length} 个暂存的事件监听器`); + this.pendingListeners.forEach(({ event, callback }) => { + this.on(event, callback); + }); + this.pendingListeners = []; // 清空暂存队列 + } + // 监听连接成功 this.socket.on('connect', () => { this.connected = true; @@ -147,8 +157,10 @@ class SocketService { */ on(event, callback) { if (!this.socket) { - logger.warn('socketService', 'Cannot listen to event: socket not initialized', { event }); - console.warn(`[socketService] ❌ 无法监听事件 ${event}: Socket 未初始化`); + // Socket 未初始化,暂存监听器 + logger.info('socketService', 'Socket not ready, queuing listener', { event }); + console.log(`[socketService] 📦 Socket 未初始化,暂存事件监听器: ${event}`); + this.pendingListeners.push({ event, callback }); return; }