news 2026/7/3 8:42:12

EteDrop 正式开源:一个基于 Flutter、NestJS 和 WebRTC 的跨平台文件传输项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EteDrop 正式开源:一个基于 Flutter、NestJS 和 WebRTC 的跨平台文件传输项目

摘要

EteDrop 是一个跨平台文件传输项目,包含Flutter 客户端、NestJS 信令服务、文件分享页和官网。项目目标是让手机、电脑、桌面端和浏览器之间可以更方便地传输文件,优先使用局域网和 WebRTC/P2P 等直接传输方式,服务端主要负责信令、分享页分发和运行状态接口。

项目已正式开源:

  • GitHub:https://github.com/bfzg/etedrop
  • 官网:https://etedrop.com

为什么做 EteDrop

日常工作里,文件传输是一个很高频但经常不够顺手的场景:

  • 手机传电脑,需要登录同一个账号或借助聊天软件;
  • 电脑传电脑,经常要经过网盘或云端中转;
  • 大文件传输受限于上传速度、下载速度和容量限制;
  • 局域网明明很快,但很多工具没有很好利用;
  • 临时发给别人一个文件,希望对方直接用浏览器打开就能接收。

EteDrop 的目标不是再做一个网盘,而是做一个更轻量、更直接的文件传输工具:能走局域网时优先走局域网,能建立 P2P 时尽量让数据直接在设备之间传输,服务端只承担必要的协调工作。

项目能力

当前项目主要包含这些能力:

  • 多平台客户端:Android、iOS、macOS、Windows、Linux;
  • 局域网设备发现和局域网传输;
  • WebRTC/P2P 文件传输;
  • 浏览器分享页接收文件;
  • 常见文件类型预览;
  • 部分媒体播放和转码流程;
  • 全球节点和中国大陆节点配置;
  • 服务端健康检查、用量统计和 Prometheus 指标接口;
  • 官网、下载页和部署文档。

技术架构

项目采用 monorepo 方式组织:

fast_send_workspace/ ├── fast_send_flutter/ # Flutter 客户端 ├── fast_send_server/ # NestJS 信令与 API 服务 ├── share-page-app/ # React/Vite 文件分享页 ├── website/ # Docusaurus 官网 ├── doc/ # 架构、部署、协议、打包文档 └── ffmpeg_build/ # FFmpeg/FFprobe 二进制文件

Flutter 客户端

客户端使用 Flutter 实现,覆盖移动端和桌面端。核心关注点包括:

  • 跨平台 UI 和本地文件选择;
  • 局域网设备发现;
  • WebSocket 信令连接;
  • WebRTC 数据通道传输;
  • 文件接收、下载状态和任务管理;
  • 桌面端托盘、通知、自启动等体验。

NestJS 信令服务端

服务端主要负责“协调”,而不是“存储文件”:

  • /api/connect:设备之间的信令连接;
  • /api/share:浏览器分享页相关连接;
  • /api/system/health:健康检查;
  • /api/system/metrics:Prometheus 指标;
  • 静态托管分享页资源。

服务端可以部署在 Nginx 后面,由 Nginx 负责 TLS 终止和域名转发。

文件分享页

分享页是一个独立的 React/Vite 项目。用户打开分享链接后,可以直接在浏览器里查看分享信息、预览部分文件并下载。

这个设计的好处是:接收方不一定需要安装客户端,只要有浏览器,就可以参与一次临时文件接收。

WebRTC/P2P

EteDrop 尽量避免所有文件都经过服务端中转。服务端主要用于交换连接信息,真正的数据传输优先发生在设备之间。

这样做的优势是:

  • 降低服务端带宽压力;
  • 在局域网或网络条件较好时传输更快;
  • 文件数据不必默认进入中心化存储。

开源前做了哪些处理

这次开源前,项目补充了:

  • 根目录README.md和中文 README;
  • MIT License;
  • CONTRIBUTING.md
  • SECURITY.md
  • THIRD_PARTY_NOTICES.md
  • Android 签名配置模板;
  • 根目录.gitignore
  • Git 历史中的本地工作目录、系统文件和签名密钥清理。

其中 FFmpeg 二进制相关内容单独写在第三方声明中。FFmpeg 的许可证义务取决于构建参数和启用组件,发布二进制安装包前需要重新核对。

快速体验

克隆项目:

gitclone https://github.com/bfzg/etedrop.gitcdfast_send_workspace

启动服务端:

cdfast_send_servernpmcinpmrun start:dev

启动 Flutter 客户端:

cdfast_send_flutter flutter pub get flutter run-dmacos

启动分享页:

cdshare-page-appnpmcinpmrun tailwindnpmrun dev

更多命令可以查看仓库 README 和doc/目录。

适合谁关注

如果你对下面这些方向感兴趣,可以看看这个项目:

  • Flutter 跨平台客户端开发;
  • WebRTC DataChannel 文件传输;
  • 局域网发现和设备互联;
  • NestJS WebSocket 服务;
  • 文件分享页和浏览器接收体验;
  • 一个真实跨端产品从客户端、服务端到官网的工程组织方式。

后续计划

后续会继续围绕这些方向优化:

  • 跨平台传输稳定性;
  • 大文件传输体验;
  • 分享页兼容性;
  • 部署和打包流程;
  • 文档和开源协作流程;
  • 更多平台能力补齐。

项目地址

  • GitHub:https://github.com/bfzg/etedrop
  • 官网:https://etedrop.com

如果你觉得项目有帮助,欢迎 Star、Issue 或参与贡献。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 8:41:44

删除主板Wi-Fi信息

第一步:查看所有已保存的 Wi-Fi 连接名称nmcli connection show输出示例:NAME UUID TYPE DEVICE MyHomeWiFi 7a92b1c3-31d1-51e7-a60e-3a52e52b4495 wifi wlan0 Wired connecti…

作者头像 李华
网站建设 2026/7/3 8:40:17

阶跃星辰Step 3.5 Flash:面向边缘部署的轻量推理开源模型

1. 项目概述:这不是一次简单的模型更新,而是一次面向实际部署的“减法革命”“阶跃星辰开源Step 3.5 Flash”——光看这个标题,你可能第一反应是又一个大模型版本迭代的新闻稿。但如果你真去翻它的GitHub仓库、跑一遍推理脚本、对比一下在树莓…

作者头像 李华
网站建设 2026/7/3 8:38:01

抖音下载终极指南:3分钟学会批量保存无水印视频和直播回放

抖音下载终极指南:3分钟学会批量保存无水印视频和直播回放 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…

作者头像 李华
网站建设 2026/7/3 8:36:53

ExplorerBlurMica:重塑Windows资源管理器的视觉边界

ExplorerBlurMica:重塑Windows资源管理器的视觉边界 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlurMica 在…

作者头像 李华