p2p-file-transfer/README.md
2026-01-12 04:53:21 +08:00

4.2 KiB
Raw Blame History

P2P File Transfer

一个基于 WebRTC 的点对点文件传输应用,支持跨平台桌面部署。

项目简介

本项目实现了一个无需经过服务器的 P2P 文件传输系统。文件直接在用户之间通过 WebRTC 数据通道传输,服务器仅用于信令交换(帮助建立 P2P 连接),保证了传输的高效性和隐私性。

主要特性

  • 点对点传输 - 文件直接在用户之间传输,不经过服务器
  • 房间系统 - 用户可以加入房间,查看并连接房间内的其他用户
  • 实时传输 - 基于 WebRTC DataChannel 实现高速文件传输
  • 传输管理 - 实时显示传输进度、状态(发送中/接收中/已完成/失败)
  • 传输控制 - 接收方可接受或拒绝文件传输请求
  • 多语言支持 - 支持中文和英文界面切换
  • 跨平台 - 基于 Tauri 构建,支持 Windows、macOS 和 Linux

技术栈

前端

  • Vue 3 - 使用 Composition API 和 <script setup> 语法
  • Tauri 2 - 跨平台桌面应用框架(基于 Rust
  • Socket.io-client - WebSocket 客户端,用于信令服务器通信
  • WebRTC - 实现点对点数据传输
  • vue-i18n - 国际化支持

后端服务器

  • Node.js - 运行时环境
  • Koa 2 - Web 框架
  • Socket.io - WebSocket 服务器,用于信令交换
  • @koa/cors - CORS 支持

项目结构

p2p-transfer/
├── src/                    # Vue 前端源码
│   ├── components/         # Vue 组件
│   ├── composables/        # 组合式函数WebRTC、文件传输等
│   ├── i18n/              # 国际化配置
│   └── utils/             # 工具函数
├── server/                # Node.js 后端服务器
│   ├── routes/            # 路由
│   └── index.js           # 服务器入口
├── src-tauri/             # Tauri 配置Rust
└── public/                # 静态资源

部署方式

一、部署信令服务器

信令服务器用于帮助客户端建立 P2P 连接,不存储或转发文件数据。

1. 安装依赖

cd server
pnpm install

2. 启动服务器

开发模式(支持热重载):

pnpm dev

生产模式:

pnpm start

服务器默认运行在 http://127.0.0.1:3000

二、部署桌面客户端

1. 安装依赖

pnpm install

2. 开发模式

启动前端开发服务器和 Tauri 开发窗口:

pnpm tauri dev

3. 构建生产版本

构建可分发的桌面应用:

pnpm tauri build

构建产物位于 src-tauri/target/release/bundle/ 目录,包含:

  • Windows: .exe 安装程序
  • macOS: .dmg 安装包
  • Linux: .AppImage.deb

4. 仅构建前端

如果只需要构建前端资源:

pnpm build

三、使用说明

  1. 启动服务器 - 先启动信令服务器
  2. 启动客户端 - 运行桌面应用
  3. 连接服务器 - 在客户端输入服务器地址并连接
  4. 加入房间 - 输入房间ID和昵称加入房间
  5. 连接用户 - 点击用户列表中的"连接"按钮建立 P2P 连接
  6. 传输文件 - 选择文件并发送给已连接的用户

网络要求

  • STUN 服务器 - 应用使用 Google 的公共 STUN 服务器(stun.l.google.com:19302)帮助穿透 NAT
  • 局域网传输 - 在同一局域网内传输效果最佳
  • 公网传输 - 需要配置 TURN 服务器以支持更复杂的网络环境

开发环境要求

  • Node.js >= 18(项目开发使用v20.19.6)
  • pnpm >= 8(项目开发使用10.28.0)
  • Rust >= 1.70(用于 Tauri 构建)
  • 系统依赖
    • Windows: WebView2, Visual Studio C++ Build Tools
    • macOS: Xcode Command Line Tools
    • Linux: webkit2gtk, libayatana-appindicator3

推荐的 IDE 设置

许可证

MIT