vue3-homework/WEBSOCKET_TEST_GUIDE.md

112 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

2025-08-01 00:59:37 +08:00
# WebSocket 聊天系统测试指南
## 🚀 功能特性
### 1. 用户管理
- ✅ 用户登录/退出
- ✅ 在线用户实时显示
- ✅ 用户上线/下线通知
### 2. 消息类型
-**广播消息** - 所有在线用户都能收到
-**私聊消息** - 点对点发送给特定用户
-**系统消息** - 用户上线/下线通知
### 3. 技术实现
- **后端**: Spring Boot + WebSocket + STOMP
- **前端**: Vue 3 + Element Plus + TypeScript
- **消息协议**: STOMP over SockJS
## 🧪 测试步骤
### 1. 启动后端服务
```bash
cd ws-begin
mvn spring-boot:run
```
后端将在 `http://localhost:8080` 启动
### 2. 启动前端服务
```bash
cd my-vue3-app
npm run dev
```
前端将在 `http://localhost:5173` 启动
### 3. 测试广播消息
1. 访问 `/test` 页面
2. 输入用户IDuser1并点击"登录"
3. 点击"发送广播消息"按钮
4. 查看广播消息列表
### 4. 测试私聊功能
1. 打开两个浏览器窗口(或无痕模式)
2. 分别以不同用户ID登录user1, user2
3. 在在线用户列表中选择要发送的用户
4. 输入私聊消息并发送
5. 查看私聊记录
### 5. 测试用户状态
1. 用户登录时,其他用户会收到上线通知
2. 用户关闭页面时,会收到下线通知
3. 在线用户列表实时更新
## 📡 API 端点
### WebSocket 端点
- **连接**: `ws://localhost:8080/ws`
- **协议**: STOMP over SockJS
### 消息映射
- `/app/login` - 用户登录
- `/app/send` - 发送广播消息
- `/app/sendToUser` - 发送私聊消息
### 订阅主题
- `/topic/messages` - 广播消息
- `/topic/users` - 用户状态变化
- `/user/queue/private` - 私聊消息
### REST API
- `GET /api/onlineUsers` - 获取在线用户列表
## 🔧 关键功能说明
### sendToUser 功能
```java
@MessageMapping("/sendToUser")
public void sendToUser(@Payload Message message, @Header("simpSessionId") String sessionId) {
// 检查接收者是否在线
if (userSessionService.isUserOnline(message.getReceiver())) {
// 发送给特定用户
simpMessagingTemplate.convertAndSendToUser(
message.getReceiver(),
"/queue/private",
message
);
}
}
```
### 前端私聊订阅
```typescript
// 订阅私聊消息
stompClient?.subscribe('/user/queue/private', (msg) => {
console.log('收到私聊消息:', msg)
// 处理私聊消息...
})
```
## 🎯 测试要点
1. **多用户测试**: 使用多个浏览器窗口模拟多用户
2. **消息准确性**: 确保私聊消息只有指定用户能收到
3. **状态同步**: 用户上线/下线状态正确同步
4. **错误处理**: 向离线用户发送消息的错误提示
## 🐛 常见问题
1. **消息重复**: 已解决订阅重复问题
2. **跨域问题**: 已配置 CORS 支持
3. **连接失败**: 检查后端服务是否启动
4. **私聊失败**: 确保目标用户已登录且在线