vue3-homework/PRIVATE_MESSAGE_DEBUG.md

3.2 KiB
Raw Blame History

私聊消息调试指南

🔍 问题诊断步骤

1. 检查后端服务

确保后端服务正在运行:

cd ws-begin
mvn spring-boot:run

2. 检查前端连接

  1. 打开浏览器开发者工具F12
  2. 访问 http://localhost:5173/test
  3. 查看 Console 标签页的输出

3. 登录测试

  1. 输入用户IDuser1
  2. 点击"登录"按钮
  3. 检查控制台输出:
    WebSocket 连接成功
    开始订阅私聊消息: /user/queue/private 用户: user1
    私聊消息订阅成功: user1
    

4. 多用户测试

  1. 打开两个浏览器窗口(或一个无痕窗口)
  2. 分别以不同用户登录:
    • 窗口1user1
    • 窗口2user2
  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 订阅回调

关键日志

查找以下关键日志来诊断问题:

  • 私聊消息订阅成功
  • 收到私聊消息
  • 发送私聊消息
  • 私聊消息列表更新