范围: src/business/chat/ 涉及文件: - chat.module.ts - chat.service.ts 主要功能: - 添加ZulipAccountsModule依赖,支持查询用户Zulip账号 - 实现initializeZulipClientForUser方法,登录时自动初始化Zulip客户端 - 从数据库获取用户Zulip账号信息和API Key - 优化会话创建流程,使用已创建的Zulip客户端队列ID - 移除登出时的API Key删除逻辑,保持持久化 - 支持基于目标地图的消息发送(mapId参数) 技术改进: - 分离Zulip客户端初始化逻辑,提高代码可维护性 - 添加完整的错误处理和日志记录 - 支持用户没有Zulip账号的场景(优雅降级)
Chat 聊天业务模块
Chat 模块是游戏服务器的核心聊天业务层,负责实现游戏内实时聊天功能,包括玩家会话管理、消息过滤、位置追踪和 Zulip 异步同步。该模块通过 SESSION_QUERY_SERVICE 接口向其他业务模块提供会话查询能力。
对外提供的接口
ChatService
handlePlayerLogin(request: PlayerLoginRequest): Promise
处理玩家登录,验证 Token 并创建游戏会话。
handlePlayerLogout(socketId: string, reason?: string): Promise
处理玩家登出,清理会话和相关资源。
sendChatMessage(request: ChatMessageRequest): Promise
发送聊天消息,包含内容过滤、实时广播和 Zulip 异步同步。
updatePlayerPosition(request: PositionUpdateRequest): Promise
更新玩家在游戏地图中的位置。