跳到主要内容

Peer Drop

📤 安全的点对点文件和文本传输工具

状态: 🟢 在线
链接: https://peer-drop.real-tech.online/
技术栈: Next.js, PeerJS, WebRTC, Tailwind CSS


背景

经常需要在手机和电脑之间传文件,或者跟家人分享文件。现有方案要么需要上传到云端(隐私问题),要么需要注册账号,要么有文件大小限制。

痛点

常见的文件传输方式都有问题:

  • 云服务:文件上传到第三方服务器,有隐私风险
  • 邮件/微信:文件大小限制(通常 20-100MB)
  • USB 数据线:不方便,需要物理连接
  • AirDrop:只能在苹果生态内使用
  • 注册账号:大多数服务都需要注册

我需要的是:一种简单的方式,在设备之间直接传文件,不经过中间服务器。

方案

基于 WebRTC 做了一个浏览器端的 P2P 传输工具:

  • 直连传输:设备对设备,服务器不存储任何文件
  • 扫码配对:扫二维码即可连接,不需要手动输入 ID
  • 免安装:浏览器直接用,不需要装 App
  • 无大小限制:任意大小的文件都能传
  • 实时聊天:传文件的同时可以发文字消息

核心技术

  • PeerJS 简化 WebRTC 实现
  • STUN 服务器(Google 公共 STUN)做 NAT 穿透
  • 文件分块传输,保证大文件传输可靠性
  • Next.js 作为前端框架

结果

能用的

  • ✅ 设备之间直接传文件,成功率高
  • ✅ 无文件大小限制(测试过 5GB+ 的文件)
  • ✅ 局域网内传输速度快(50-100MB/s)
  • ✅ 扫码配对,操作简单
  • ✅ 跨平台(iOS、Android、Windows、Mac)
  • ✅ 传文件的同时可以实时聊天

局限

  • ❌ 双方必须同时在线(不支持异步传输)
  • ❌ 需要支持 WebRTC 的现代浏览器
  • ❌ 企业网络防火墙严格时可能连接失败
  • ❌ 断线后不能续传
  • ❌ 跨网络传输速度取决于网速

实际使用数据(我自己的使用情况):

  • 手机到电脑传文件用了 50+ 次
  • 最大传过 8GB 的视频文件
  • 最常见用途:从手机传照片(每张 20-50MB)

总结

核心收获:P2P 非常适合实时、隐私敏感的传输场景,但不适合异步文件分享。在便利性和隐私之间的取舍,对于个人/家庭使用来说是值得的。

技术洞察:WebRTC 最大的挑战不是 API 本身,而是处理各种网络环境。STUN 服务器能解决大部分情况,但企业网络仍然需要 TURN 中继。

如果重来

  1. 加 TURN 服务器兜底,解决复杂网络环境(中继加密数据)
  2. 实现文件分块断点续传
  3. 加传输历史记录(只存元数据,不存文件)
  4. 支持多文件选择和文件夹传输

实践记录