Initial commit: DataTool backend, frontend and Docker
This commit is contained in:
28
docs/01-整体架构与核心概念.md
Normal file
28
docs/01-整体架构与核心概念.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 01 - 整体架构与核心概念
|
||||
|
||||
## 目标与范围
|
||||
- **目标**:在 VNC/远程桌面、内网隔离等场景下,提供基于浏览器的轻量数据传输能力,通过 WebSocket 实现多端实时同步。
|
||||
- **范围**:文本、文件(分片)、图片预览、剪贴板读取/粘贴、在线用户列表、历史记录(本地)。
|
||||
|
||||
## 架构概览
|
||||
```
|
||||
发送端浏览器(Vue) <——WebSocket(STOMP/SockJS)——> 服务端(Spring Boot) <——> 接收端浏览器(Vue)
|
||||
│
|
||||
└—— 同一房间号(roomCode)隔离广播
|
||||
```
|
||||
|
||||
## 核心概念
|
||||
- **房间(Room)**:数据传输隔离空间,通过 **6 位数字** `roomCode` 标识。
|
||||
- **会话(Session)**:WebSocket 连接实例,通常以 `sessionId` 识别。
|
||||
- **消息(Message)**:传输数据单元,支持 `TEXT/FILE/IMAGE/SYSTEM/CHUNK`。
|
||||
|
||||
## 关键数据流
|
||||
- **加入房间**:客户端连接成功后发送 `/app/room/{roomCode}/join` → 服务端更新房间用户 → 广播 `SYSTEM(USER_JOIN + userList)` 到 `/topic/room/{roomCode}`。
|
||||
- **发送消息**:客户端发送 `/app/room/{roomCode}/message`(TEXT/FILE/IMAGE/SYSTEM)→ 服务端补齐时间戳并广播到 `/topic/room/{roomCode}`。
|
||||
- **文件分片**:客户端发送 `/app/room/{roomCode}/file/chunk`(CHUNK)→ 服务端转发到 `/topic/room/{roomCode}/file/{fileId}`(或同房间通道内约定字段分发)。
|
||||
|
||||
## 非功能性要求(NFR)
|
||||
- **可用性**:断线自动重连;重连后需重新 join。
|
||||
- **性能**:大文本/大文件分片;限制单文件大小与分片大小;避免 UI 卡顿(增量渲染/节流)。
|
||||
- **安全**:默认不落库;房间过期;XSS 防护;可选 WSS/Origin 校验。
|
||||
|
||||
Reference in New Issue
Block a user