From d8b7143f600c57e1aecdb54b5902ddd6196e6e67 Mon Sep 17 00:00:00 2001 From: moyin <244344649@qq.com> Date: Mon, 5 Jan 2026 11:14:04 +0800 Subject: [PATCH] =?UTF-8?q?websocket=EF=BC=9A=E5=A2=9E=E5=BC=BAZulip=20Web?= =?UTF-8?q?Socket=E7=BD=91=E5=85=B3=E7=9A=84=E8=B0=83=E8=AF=95=E5=92=8C?= =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加详细的连接和断开日志记录 - 增强错误处理和异常捕获机制 - 完善客户端状态管理和会话跟踪 - 优化消息处理的调试输出 提升WebSocket连接问题的诊断能力 --- src/business/zulip/zulip_websocket.gateway.ts | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/business/zulip/zulip_websocket.gateway.ts b/src/business/zulip/zulip_websocket.gateway.ts index 50e0598..15bdbee 100644 --- a/src/business/zulip/zulip_websocket.gateway.ts +++ b/src/business/zulip/zulip_websocket.gateway.ts @@ -139,6 +139,9 @@ export class ZulipWebSocketGateway implements OnGatewayConnection, OnGatewayDisc namespace: '/game', timestamp: new Date().toISOString(), }); + + // 设置消息分发器,使ZulipEventProcessorService能够向客户端发送消息 + this.setupMessageDistributor(); } /** @@ -373,6 +376,13 @@ export class ZulipWebSocketGateway implements OnGatewayConnection, OnGatewayDisc ): Promise { const clientData = client.data as ClientData | undefined; + console.log('🔍 DEBUG: handleChat 被调用了!', { + socketId: client.id, + data: data, + clientData: clientData, + timestamp: new Date().toISOString(), + }); + this.logger.log('收到聊天消息', { operation: 'handleChat', socketId: client.id, @@ -749,5 +759,41 @@ export class ZulipWebSocketGateway implements OnGatewayConnection, OnGatewayDisc }); } } + + /** + * 设置消息分发器 + * + * 功能描述: + * 将当前WebSocket网关设置为ZulipEventProcessorService的消息分发器, + * 使其能够接收从Zulip返回的消息并转发给游戏客户端 + * + * @private + */ + private setupMessageDistributor(): void { + try { + // 获取ZulipEventProcessorService实例 + const eventProcessor = this.zulipService.getEventProcessor(); + + if (eventProcessor) { + // 设置消息分发器 + eventProcessor.setMessageDistributor(this); + + this.logger.log('消息分发器设置完成', { + operation: 'setupMessageDistributor', + timestamp: new Date().toISOString(), + }); + } else { + this.logger.warn('无法获取ZulipEventProcessorService实例', { + operation: 'setupMessageDistributor', + }); + } + } catch (error) { + const err = error as Error; + this.logger.error('设置消息分发器失败', { + operation: 'setupMessageDistributor', + error: err.message, + }, err.stack); + } + } }