119 lines
1.6 KiB
Markdown
119 lines
1.6 KiB
Markdown
# WebSocket通信模块接口文档
|
||
|
||
## 模块概述
|
||
WebSocket通信模块提供实时弹幕和在线人数的推送功能。
|
||
|
||
---
|
||
|
||
## WebSocket连接
|
||
|
||
### 1. 实时弹幕WebSocket
|
||
|
||
**连接地址**: `ws://host:port/ws/live/chat/{roomId}`
|
||
|
||
**连接参数**:
|
||
```
|
||
roomId: 房间ID (路径参数)
|
||
```
|
||
|
||
**发送消息格式**:
|
||
```json
|
||
{
|
||
"type": "chat",
|
||
"content": "弹幕内容",
|
||
"nickname": "用户昵称",
|
||
"userId": 用户ID
|
||
}
|
||
```
|
||
|
||
**接收消息格式**:
|
||
|
||
弹幕消息:
|
||
```json
|
||
{
|
||
"type": "chat",
|
||
"nickname": "用户昵称",
|
||
"content": "弹幕内容"
|
||
}
|
||
```
|
||
|
||
连接确认:
|
||
```json
|
||
{
|
||
"type": "connected",
|
||
"content": "连接成功"
|
||
}
|
||
```
|
||
|
||
心跳响应:
|
||
```json
|
||
{
|
||
"type": "pong"
|
||
}
|
||
```
|
||
|
||
**心跳消息**:
|
||
```json
|
||
{
|
||
"type": "ping"
|
||
}
|
||
```
|
||
|
||
**说明**:
|
||
- 心跳间隔: 30秒
|
||
- 自动重连: 最多5次
|
||
- 重连延迟: 5秒 × 重连次数
|
||
|
||
---
|
||
|
||
### 2. 在线人数WebSocket
|
||
|
||
**连接地址**: `ws://host:port/ws/live/{roomId}?clientId={clientId}`
|
||
|
||
**连接参数**:
|
||
```
|
||
roomId: 房间ID (路径参数)
|
||
clientId: 客户端ID (查询参数,用户ID或guest_时间戳)
|
||
```
|
||
|
||
**接收消息格式**:
|
||
|
||
在线人数更新:
|
||
```json
|
||
{
|
||
"type": "online_count",
|
||
"count": 1234,
|
||
"roomId": "房间ID",
|
||
"timestamp": 1704000000000
|
||
}
|
||
```
|
||
|
||
连接确认:
|
||
```json
|
||
{
|
||
"type": "connected",
|
||
"message": "连接成功",
|
||
"clientId": "用户ID或guest_时间戳"
|
||
}
|
||
```
|
||
|
||
心跳响应:
|
||
```json
|
||
{
|
||
"type": "pong"
|
||
}
|
||
```
|
||
|
||
**心跳消息**:
|
||
```json
|
||
{
|
||
"type": "ping"
|
||
}
|
||
```
|
||
|
||
**说明**:
|
||
- 心跳间隔: 30秒
|
||
- 自动重连: 最多5次
|
||
- 重连延迟: 5秒 × 重连次数
|
||
- 用户进入/离开时自动推送在线人数更新
|