# 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`。 ## 许可证 [待定]