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