Skip to content

goxofy/P2P-File-Transfer-WebRTC

Repository files navigation

P2P 文件传输工具 (WebRTC)

一个基于 WebRTC 的点对点文件传输工具,支持浏览器和命令行。文件优先使用 P2P 技术在用户设备间传输,快速且私密。

✨ 主要功能

  • 点对点传输: 基于 WebRTC DataChannel,文件不经服务器,只有直连失败才会使用服务器中转。
  • 跨平台使用: 提供简洁美观的 Web 界面和功能强大的 CLI 命令行工具。
  • 独立可执行: 可打包成单个二进制文件,无需安装 Node.js 环境。
  • 多种上传方式: 支持点击选择、拖拽上传、粘贴上传(Ctrl+V)多种方式。
  • 多文件传输: 支持同时传输多个文件。
  • 房间机制: 通过简单的房间ID连接两端。
  • 智能回退: P2P 无法建立时自动切换到服务器中转模式(数据仅在内存中转发,不存储)。

📋 更新日志

v1.1 (2026-01-23)

新功能

  • ✨ 支持拖拽文件到上传区域
  • ✨ 支持 Ctrl+V / Cmd+V 粘贴文件
  • ✨ 上传区域支持点击选择文件

UI 优化

  • 🎨 全新的现代化 UI 设计,保持极简风格
  • 🎨 连接状态增加彩色指示器
  • 🎨 拖拽时有明显的视觉反馈
  • 🎨 优化移动端响应式布局

健壮性增强

  • 🔧 WebRTC 连接超时后自动回退到中转模式
  • 🔧 中转模式增加背压控制,防止内存溢出
  • 🔧 修复 CLI 客户端先入房时 Web 客户端无法连接的问题
  • 🔧 优化心跳检测机制,清理僵尸连接
  • 🔧 文件传输完成后正确清理临时数据

🚀 快速上手

1. 安装依赖

npm install

2. 启动服务

此命令会启动信令服务器,并托管 Web 界面。

npm start

服务器启动后,Web 界面默认在 http://localhost:3000

3. 使用方法

方式一:使用 Web 界面

  1. 在两个不同的浏览器或标签页中打开 http://localhost:3000
  2. 在一个页面填入或点击 "Generate",然后将这个ID复制到另一个页面。
  3. 在两个页面都点击 "Connect"
  4. 双端会尝试 P2P 直连(直连失败则中转),连接成功后,拖拽文件到窗口或点击按钮选择文件即可开始传输。

方式二:使用命令行 (CLI)

命令行工具(Actions 自动构建二进制)可以与 Web 界面另一个终端的用户进行文件传输。

  1. (可选) 全局安装或链接 CLI:

    # 全局安装
    npm install -g .
    # 或者,为本地开发创建链接
    npm link
  2. 获取房间 ID: 在终端中运行 p2p-transfer room 或从 Web 界面获取一个房间 ID。

    p2p-transfer room
    # 🏠 随机房间ID: ABCDEFG
  3. 开始传输: 使用相同的房间 ID,一端作为接收方,另一端作为发送方。

    • CLI 作为接收方:

      p2p-transfer receive --room ABCDEFG

      此时,Web 用户或另一个 CLI 用户可以在同一房间向你发送文件。

    • CLI 作为发送方:

      p2p-transfer send ./path/to/your/file.txt --room ABCDEFG

      此时,Web 用户或另一个 CLI 用户可以在同一房间接收你的文件。

🛠️ 为开发者:构建二进制文件

如果你想将 CLI 工具打包成一个独立的可执行文件,可以运行以下命令:

  • 构建当前平台:

    npm run build
  • 构建所有支持的平台 (Linux, macOS, Windows):

    npm run build:all

构建完成后,二进制文件会存放在 dist/ 目录下。

📄 许可证

本项目基于 MIT 许可证。

🎆 Screenshot

CleanShot 2025-08-16 at 02 34 18@2x

About

Transfer file peer to peer with webrtc

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors