Files
whale-town-end/src/business/chat
moyin cf1b37af78 feat(chat): 实现登录时自动初始化Zulip客户端
范围: src/business/chat/
涉及文件:
- chat.module.ts
- chat.service.ts

主要功能:
- 添加ZulipAccountsModule依赖,支持查询用户Zulip账号
- 实现initializeZulipClientForUser方法,登录时自动初始化Zulip客户端
- 从数据库获取用户Zulip账号信息和API Key
- 优化会话创建流程,使用已创建的Zulip客户端队列ID
- 移除登出时的API Key删除逻辑,保持持久化
- 支持基于目标地图的消息发送(mapId参数)

技术改进:
- 分离Zulip客户端初始化逻辑,提高代码可维护性
- 添加完整的错误处理和日志记录
- 支持用户没有Zulip账号的场景(优雅降级)
2026-01-19 18:29:53 +08:00
..
2026-01-14 19:17:32 +08:00

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

更新玩家在游戏地图中的位置。

getChatHistory(query: object): Promise