feat:美化UI,添加桌面共享/文件字传输UI

This commit is contained in:
MatrixSeven
2025-08-01 17:15:55 +08:00
parent 9e59806192
commit 652dbed722
20 changed files with 8255 additions and 755 deletions

144
README.md
View File

@@ -1,33 +1,133 @@
# 川 - P2P文件传输系统
# 传传传 - 跨平台文件传输工具
一个基于WebRTC技术的点对点文件传输系统支持无服务器中转的直接文件传输。
> 简单、快速、安全的点对点文件传输解决方案
## ✨ 功能特性
## ✨ 核心功能
### 🚀 核心功能
- **纯P2P传输**:文件直接在浏览器间传输,无需上传到服务器
- **取件码机制**6位随机取件码简单易用
- **实时传输**支持大文件高速传输64KB分块优化
- **多文件支持**:可同时选择和传输多个文件
- **拖拽上传**:支持文件拖拽选择
- 📁 **文件传输** - 支持多文件同时传输基于WebRTC的P2P技术
- 📝 **文字传输** - 快速分享文本内容,支持大文本传输
- 🖥️ **桌面共享** - 实时屏幕共享功能(开发中)
- 🔗 **URL路由** - 支持直链分享特定功能和模式
### 🛡️ 安全特性
- **端到端加密**WebRTC内置加密数据传输安全
- **临时连接**:传输完成后自动清理连接
- **无文件存储**:服务器不存储任何文件内容
- **房间隔离**:每个取件码对应独立的传输房间
## 🛡️ 安全特性
### 🌐 技术特性
- **WebRTC DataChannel**:高效的浏览器间直连
- **国内STUN优化**使用阿里云、腾讯云等国内STUN服务器
- **断线重连**WebSocket连接自动重连机制
- **传输进度**:实时显示文件传输进度
- **跨平台兼容**支持现代浏览器Chrome、Firefox、Safari、Edge
- **端到端加密** - WebRTC内置加密数据传输安全
- **无文件存储** - 服务器不存储任何文件内容
- **临时连接** - 传输完成后自动清理连接
- **房间隔离** - 每个取件码对应独立的传输房间
## 🏗️ 系统架构
## 🚀 技术栈
**前端架构**
- Next.js 15 + React 18 + TypeScript
- Tailwind CSS + 毛玻璃效果UI
- WebRTC DataChannel + WebSocket
**后端架构**
- Go + Gin框架 + WebSocket
- 内存存储 + 房间管理
- Docker容器化部署
## 📦 快速开始
### 方式一Docker一键部署推荐[未变写完成]
```bash
git clone https://github.com/MatrixSeven/file-transfer-go.git
cd file-transfer-go
docker-compose up -d
# 访问应用
open http://localhost:8080
```
### 方式二:本地开发
```bash
# 1. 启动后端服务
make dev
# 2. 启动前端服务
cd chuan-next
yarn
yarn dev
# 访问应用
open http://localhost:3000
```
## 🎯 URL路由支持
支持通过URL参数直接跳转到特定功能
```bash
# 文件传输
/?type=file&mode=send # 发送文件
/?type=file&mode=receive # 接收文件
# 文字传输
/?type=text&mode=send # 发送文字
/?type=text&mode=receive # 接收文字
# 桌面共享
/?type=desktop&mode=send # 共享桌面
/?type=desktop&mode=receive # 观看桌面
```
## 🌟 项目特色
-**零配置** - 无需注册登录,即开即用
- 🔒 **点对点** - 基于WebRTC的直接传输服务器仅做信令
- 📱 **响应式** - 完美适配手机、平板、电脑
- <20> **现代UI** - 精美的毛玻璃效果,流畅的动画
- 🚀 **高性能** - 64KB分块传输支持大文件高速传输
## 📊 系统架构
```
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
┌─────────────────┐ WebSocket ┌──────────────┐ WebSocket ┌─────────────────┐
│ 发送方 (A) │ ←──────────────→ │ 信令服务器 │ ←──────────────→ │ 接收方 (B) │
│ │ │ │ │ │
│ - 选择文件 │ │ - 房间管理 │ │ - 输入取件码 │
│ - 生成取件码 │ │ - 信令转发 │ │ - 获取文件列表 │
│ - 等待连接 │ │ - 状态同步 │ │ - 下载文件 │
└─────────────────┘ └──────────────┘ └─────────────────┘
│ │
│ WebRTC P2P │
│ ┌─────────────────┐ │
└────────────────────→│ 直接文件传输 │←──────────────────────────────┘
│ │
│ - 端到端加密 │
│ - 高速传输 │
│ - 断点续传 │
└─────────────────┘
```
## 📁 项目结构
```
.
├── cmd/ # Go应用入口
├── internal/ # Go后端核心代码
│ ├── handlers/ # HTTP和WebSocket处理器
│ ├── models/ # 数据模型
│ └── services/ # 业务服务层
├── chuan-next/ # Next.js前端应用
│ ├── src/app/ # 应用页面
│ ├── src/components/ # 组件库
│ └── src/hooks/ # React Hooks
├── web/ # 静态资源(测试页面)
├── docker-compose.yml # Docker部署配置
└── Makefile # 构建脚本
```
## 🤝 贡献指南
欢迎提交Issue和Pull Request来帮助改进项目
## 📄 许可证
MIT License
│ 发送方浏览器 │◄────────┤ 信令服务器 ├────────►│ 接收方浏览器 │
│ │ │ │ │ │
│ ┌───────────┐ │ │ ┌──────────┐ │ │ ┌───────────┐ │