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

3.6 KiB
Raw Blame History

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+

  2. 配置 JAVA_HOME 环境变量

    # Windows PowerShell (管理员权限)
    [System.Environment]::SetEnvironmentVariable('JAVA_HOME', 'C:\Program Files\Eclipse Adoptium\jdk-17.x.x-hotspot', 'Machine')
    
  3. 验证 Java 版本

    java -version
    # 应该显示 java version "17.x.x" 或更高
    
    mvn -v
    # 应该显示 Java version: 17.x.x
    

Node.js 版本要求

  • Node.js 18+ 和 npm 9+

快速开始

后端启动

cd backend
mvn clean install
mvn spring-boot:run

后端将在 http://localhost:8080 启动WebSocket 端点为 /ws

前端启动

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,支持直传与分块模式。

示例:

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

许可证

[待定]