一个基于 WebRTC 的点对点文件传输工具,支持浏览器和命令行。文件优先使用 P2P 技术在用户设备间传输,快速且私密。
- 点对点传输: 基于 WebRTC DataChannel,文件不经服务器,只有直连失败才会使用服务器中转。
- 跨平台使用: 提供简洁美观的 Web 界面和功能强大的 CLI 命令行工具。
- 独立可执行: 可打包成单个二进制文件,无需安装 Node.js 环境。
- 多种上传方式: 支持点击选择、拖拽上传、粘贴上传(Ctrl+V)多种方式。
- 多文件传输: 支持同时传输多个文件。
- 房间机制: 通过简单的房间ID连接两端。
- 智能回退: P2P 无法建立时自动切换到服务器中转模式(数据仅在内存中转发,不存储)。
新功能
- ✨ 支持拖拽文件到上传区域
- ✨ 支持 Ctrl+V / Cmd+V 粘贴文件
- ✨ 上传区域支持点击选择文件
UI 优化
- 🎨 全新的现代化 UI 设计,保持极简风格
- 🎨 连接状态增加彩色指示器
- 🎨 拖拽时有明显的视觉反馈
- 🎨 优化移动端响应式布局
健壮性增强
- 🔧 WebRTC 连接超时后自动回退到中转模式
- 🔧 中转模式增加背压控制,防止内存溢出
- 🔧 修复 CLI 客户端先入房时 Web 客户端无法连接的问题
- 🔧 优化心跳检测机制,清理僵尸连接
- 🔧 文件传输完成后正确清理临时数据
npm install此命令会启动信令服务器,并托管 Web 界面。
npm start服务器启动后,Web 界面默认在 http://localhost:3000。
- 在两个不同的浏览器或标签页中打开
http://localhost:3000。 - 在一个页面填入或点击 "Generate",然后将这个ID复制到另一个页面。
- 在两个页面都点击 "Connect"。
- 双端会尝试 P2P 直连(直连失败则中转),连接成功后,拖拽文件到窗口或点击按钮选择文件即可开始传输。
命令行工具(Actions 自动构建二进制)可以与 Web 界面或另一个终端的用户进行文件传输。
-
(可选) 全局安装或链接 CLI:
# 全局安装 npm install -g . # 或者,为本地开发创建链接 npm link
-
获取房间 ID: 在终端中运行
p2p-transfer room或从 Web 界面获取一个房间 ID。p2p-transfer room # 🏠 随机房间ID: ABCDEFG -
开始传输: 使用相同的房间 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 许可证。