mirror of
https://github.com/MatrixSeven/file-transfer-go.git
synced 2026-03-07 07:37:33 +08:00
feat:美化UI,添加桌面共享/文件字传输UI
This commit is contained in:
144
README.md
144
README.md
@@ -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
|
||||
│ 发送方浏览器 │◄────────┤ 信令服务器 ├────────►│ 接收方浏览器 │
|
||||
│ │ │ │ │ │
|
||||
│ ┌───────────┐ │ │ ┌──────────┐ │ │ ┌───────────┐ │
|
||||
|
||||
Reference in New Issue
Block a user