Files
quick-share/README.md
mangmang 1c99136944 feat(room): 增加加入令牌及分块传输支持
- 后端Room和MessagePayload新增加入令牌字段,创建房间返回包含令牌
- 新增房间加入令牌验证接口,加入时需提供房间号和令牌
- 前端HomeView新增加入令牌输入框及验证逻辑
- Clipboard工具增加写入API支持及复制按钮
- FileDropZone支持选择文件夹批量上传
- FileMessage和ImageMessage新增分片进度提示及失败重试功能
- API层新增分块上传及断点续传实现,支持大文件分片上传
- 文件上传存储时计算文件sha256,响应中返回该值
- 下载接口支持断点续传,优化大文件下载体验
- README新增加入令牌安全说明及压力测试使用示例
- 资源清理与配置优化,添加磁盘使用水位阈值控制
2026-03-06 03:15:18 +08:00

133 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DataTool - 房间数据传输助手 (quick-share)
基于 WebSocket 的轻量级数据传输工具,适用于 VNC/远程桌面、内网隔离等场景。
> 安全更新:创建房间后会生成 8 位加入令牌,加入方需同时提供「房间号 + 令牌」。
## 技术栈
- **后端**: Spring Boot 3.2.5 + Java 17 + WebSocket (STOMP/SockJS)
- **前端**: Vue 3 + TypeScript + Vite + TailwindCSS + Pinia
## 前置要求
### Java 版本要求
**重要**: 本项目需要 **Java 17 或更高版本**
当前检测到您的系统使用的是 Java 8需要升级
1. **下载并安装 Java 17+**
- 推荐使用 [Eclipse Temurin (Adoptium)](https://adoptium.net/)
- 或 [Oracle JDK](https://www.oracle.com/java/technologies/downloads/)
- 或 [Amazon Corretto](https://aws.amazon.com/corretto/)
2. **配置 JAVA_HOME 环境变量**
```powershell
# Windows PowerShell (管理员权限)
[System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\Program Files\Eclipse Adoptium\jdk-17.x.x-hotspot', 'Machine')
```
3. **验证 Java 版本**
```powershell
java -version
# 应该显示 java version "17.x.x" 或更高
mvn -v
# 应该显示 Java version: 17.x.x
```
### Node.js 版本要求
- Node.js 18+ 和 npm 9+
## 快速开始
### 后端启动
```bash
cd backend
mvn clean install
mvn spring-boot:run
```
后端将在 `http://localhost:8080` 启动WebSocket 端点为 `/ws`。
### 前端启动
```bash
cd frontend
npm install
npm run dev
```
前端将在 `http://localhost:5173` 启动。
## 项目结构
```
DataTool/
├── backend/ # Spring Boot 后端
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/datatool/
│ │ │ │ ├── config/ # WebSocket 配置
│ │ │ │ ├── room/ # 房间与会话管理
│ │ │ │ ├── message/ # 消息模型
│ │ │ │ └── ws/ # WebSocket 控制器
│ │ │ └── resources/
│ │ │ └── application.yml
│ └── pom.xml
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ ├── views/ # 页面视图
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── ws/ # WebSocket 客户端
│ │ └── router/ # 路由配置
│ └── package.json
└── docs/ # 项目文档
```
## WebSocket 端点说明
- **连接端点**: `/ws` (支持 SockJS)
- **应用前缀**: `/app`
- **广播前缀**: `/topic`
### 主要消息路径
- 加入房间: `/app/room/{roomCode}/join`
- 发送消息: `/app/room/{roomCode}/message`
- 文件分片: `/app/room/{roomCode}/file/chunk`
- 房间广播: `/topic/room/{roomCode}`
- 文件分片广播: `/topic/room/{roomCode}/file/{fileId}`
## 开发计划
当前已完成基础架构搭建,包括:
- ✅ 后端 WebSocket/STOMP 配置
- ✅ 房间与会话管理
- ✅ 前端 Vue 3 + TypeScript + Tailwind 脚手架
- ✅ WebSocket 客户端封装
- ✅ 基础 UI 组件与布局
后续功能开发请参考 `docs/` 目录下的详细文档。
## 压力测试
仓库提供压测脚本:`scripts/load-test.mjs`,支持直传与分块模式。
示例:
```bash
LOAD_BASE_URL="http://127.0.0.1:18080" LOAD_MODE=direct LOAD_CONCURRENCY=8 LOAD_REQUESTS=64 LOAD_FILE_KB=512 node scripts/load-test.mjs
LOAD_BASE_URL="http://127.0.0.1:18080" LOAD_MODE=chunked LOAD_CONCURRENCY=4 LOAD_REQUESTS=24 LOAD_FILE_KB=8192 node scripts/load-test.mjs
```
本次基线结果见:`docs/12-压力测试报告.md`。
## 许可证
[待定]