Initial commit: DataTool backend, frontend and Docker
This commit is contained in:
39
docs/02-房间管理(创建-加入-退出).md
Normal file
39
docs/02-房间管理(创建-加入-退出).md
Normal file
@@ -0,0 +1,39 @@
|
||||
# 02 - 房间管理(创建 / 加入 / 退出)
|
||||
|
||||
## 功能目标
|
||||
- **创建房间**:自动生成 6 位数字房间号 `roomCode`。
|
||||
- **加入房间**:输入房间号加入;服务端维护在线用户列表。
|
||||
- **退出房间**:主动退出或断线退出;房间空则销毁或等待过期。
|
||||
|
||||
## 前端(Vue)
|
||||
- **页面/组件**
|
||||
- `HomeView.vue`:创建房间、加入房间(输入 `roomCode`)。
|
||||
- `RoomView.vue`:展示房间信息与离开操作入口。
|
||||
- `RoomPanel.vue`:显示房间号、在线用户、退出按钮、快捷操作(清空/导出等)。
|
||||
- **交互细节**
|
||||
- 加入房间前校验 `roomCode` 为 6 位数字。
|
||||
- join/leave 成功后,在消息区插入系统提示(“xxx加入/离开”)。
|
||||
|
||||
## 后端(Spring Boot)
|
||||
- **核心服务:`RoomService`**
|
||||
- `createRoom()`:生成 `roomCode` 并创建房间。
|
||||
- `joinRoom(roomCode, sessionId, userName)`:绑定用户到房间。
|
||||
- `leaveRoom(roomCode, sessionId)`:移除用户;若空房间则移除。
|
||||
- (可选)`expireRoom()`:定时清理过期房间(按 `transfer.room-expire-hours`)。
|
||||
- **消息入口(STOMP)**
|
||||
- `/app/room/{roomCode}/join`:加入房间
|
||||
- `/app/room/{roomCode}/leave`:离开房间
|
||||
|
||||
## 协议与数据
|
||||
- **JoinRequest**
|
||||
- `userName`:用户昵称(前端生成或用户输入)
|
||||
- **系统消息(SYSTEM)**
|
||||
- `payload.event`:`USER_JOIN | USER_LEAVE | ERROR`
|
||||
- `payload.message`:提示文本
|
||||
- `payload.userList`:在线用户列表(数组)
|
||||
|
||||
## 边界与注意点
|
||||
- **房间是否需要“先创建后加入”**:文档示例允许 `computeIfAbsent`,即加入时若不存在会自动创建(实现上需确定产品规则)。
|
||||
- **断线离开**:建议监听会话断开事件,同步触发离房逻辑并广播 `USER_LEAVE`。
|
||||
- **防暴力猜测**:限制 join 尝试频率(可选增强)。
|
||||
|
||||
Reference in New Issue
Block a user