Initial commit: DataTool backend, frontend and Docker

This commit is contained in:
liu
2026-01-31 00:51:14 +08:00
commit 59bb8e16f5
69 changed files with 9449 additions and 0 deletions

View 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 校验。