# 私聊消息调试指南 ## 🔍 问题诊断步骤 ### 1. 检查后端服务 确保后端服务正在运行: ```bash cd ws-begin mvn spring-boot:run ``` ### 2. 检查前端连接 1. 打开浏览器开发者工具(F12) 2. 访问 `http://localhost:5173/test` 3. 查看 Console 标签页的输出 ### 3. 登录测试 1. 输入用户ID(如:user1) 2. 点击"登录"按钮 3. 检查控制台输出: ``` WebSocket 连接成功 开始订阅私聊消息: /user/queue/private 用户: user1 私聊消息订阅成功: user1 ``` ### 4. 多用户测试 1. 打开两个浏览器窗口(或一个无痕窗口) 2. 分别以不同用户登录: - 窗口1:user1 - 窗口2:user2 3. 确保两个用户都出现在"在线用户"列表中 ### 5. 发送私聊测试 1. 在用户1的窗口中: - 选择用户:user2 - 输入消息:Hello user2 - 点击"发送" 2. 检查控制台输出: ``` 发送私聊消息: {content: "Hello user2", sender: "user1", receiver: "user2"} ``` ### 6. 接收私聊测试 在用户2的窗口中查看控制台: ``` === 收到私聊消息 === 消息内容: {content: "Hello user2", sender: "user1", receiver: "user2", type: "private", timestamp: "..."} 私聊消息列表更新,当前数量: 1 ``` ## 🛠️ 调试工具 ### 使用"调试信息"按钮 点击私聊区域的"调试信息"按钮,会输出: - 登录状态 - 当前用户 - 连接状态 - 订阅状态 - 在线用户列表 - 私聊消息数量 ### 后端日志检查 查看后端控制台输出: ``` 收到私聊消息: user1 -> user2: Hello user2 用户 user1 已连接,会话ID: xxx 当前在线用户数: 2 ``` ## 🚨 常见问题 ### 1. 私聊消息不更新 **可能原因:** - 重复订阅导致混乱 - 订阅时机错误 - 用户未正确登录 **解决方案:** 1. 刷新页面重新登录 2. 检查控制台是否有订阅成功的日志 3. 确保两个用户都已登录 ### 2. 发送消息无响应 **可能原因:** - 接收者不在线 - WebSocket 连接断开 - 后端服务未启动 **解决方案:** 1. 检查接收者是否在线用户列表中 2. 查看网络标签页是否有 WebSocket 连接 3. 确认后端服务正常运行 ### 3. 重复消息 **可能原因:** - 页面重复订阅 - 浏览器缓存问题 **解决方案:** 1. 刷新页面 2. 清除浏览器缓存 3. 使用无痕模式测试 ## 📋 测试检查表 - [ ] 后端服务启动成功 - [ ] 前端服务启动成功 - [ ] WebSocket 连接成功 - [ ] 用户登录成功 - [ ] 私聊消息订阅成功 - [ ] 多用户在线显示正确 - [ ] 发送私聊消息成功 - [ ] 接收私聊消息成功 - [ ] 消息显示在界面上 ## 🔧 技术细节 ### 订阅路径 - 前端订阅:`/user/queue/private` - 后端发送:`convertAndSendToUser(userId, "/queue/private", message)` ### 消息流程 1. 前端发送:`/app/sendToUser` 2. 后端处理:`MessageController.sendToUser()` 3. 后端发送:`simpMessagingTemplate.convertAndSendToUser()` 4. 前端接收:`/user/queue/private` 订阅回调 ### 关键日志 查找以下关键日志来诊断问题: - `私聊消息订阅成功` - `收到私聊消息` - `发送私聊消息` - `私聊消息列表更新`