vue3-homework/PRIVATE_MESSAGE_DEBUG.md

134 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 私聊消息调试指南
## 🔍 问题诊断步骤
### 1. 检查后端服务
确保后端服务正在运行:
```bash
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` 订阅回调
### 关键日志
查找以下关键日志来诊断问题:
- `私聊消息订阅成功`
- `收到私聊消息`
- `发送私聊消息`
- `私聊消息列表更新`