ShareDrop:基于 WebRTC 的 P2P 文件传送
myzbx 2024-12-12 13:36 19 浏览
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
什么是 ShareDrop
ShareDrop 是一款受 Apple AirDrop 服务启发的 Web 应用程序,其允许用户直接在设备之间传输文件而无需先将文件上传到任何服务器。 ShareDrop 使用 WebRTC( 一种开放式网络框架,可在浏览器中启用实时通信 RTC 功能,目前已经成为 HTML5 原生标准 ) 进行安全的点对点文件传输,并使用 Firebase(Firebase 提供详细的文档和跨平台应用开发 SDK,帮助开发者构建和发布适用于 iOS、Android、Web、Flutter、Unity 等的应用) 进行状态管理和 WebRTC 信号传输。
Easy P2P file transfer powered by WebRTC - inspired by Apple AirDrop
ShareDrop 允许将文件发送到同一本地网络中的其他设备(即具有相同公共 IP 地址的设备),无需任何配置 , 只需在所有设备上打开 https://www.sharedrop.io 就会看到彼此。 ShareDrop 还允许用户在 Web 之间发送文件 ,只需单击页面右上角的 + 按钮即可创建一个具有唯一 URL 的房间,并与想要向其发送文件的其他人共享此 URL。 一旦他们在其设备上的浏览器中打开此页面,就会看到彼此的头像。
目前 ShareDrop 支持以下浏览器:
- Chrome
- Edge (Chromium based)
- Firefox
- Opera
- Safari 13+
ShareDrop 和 AirDrop 之间的主要区别在于,ShareDrop 需要互联网连接才能发现其他设备,而 AirDrop 不需要互联网连接,因为它们之间创建了临时无线网络。 另一方面,ShareDrop 允许在移动设备(Android 和 iOS)和桌面设备之间甚至网络之间共享文件。
目前 ShareDrop 在 Github 通过 MIT 协议开源,有 8.3k 的 star、1k 的 fork,是一个值得关注的开源项目。
ShareDrop 和 Snapdrop 区别
以前我有一篇文章介绍了 Snapdrop,可以点击这里查看《Snapdrop 开源!Apple Airdrop 跨平台 Webrtc 传输技术》。
ShareDrop 和 AirDrop 两种服务之间有许多相似之处。 例如,用户界面和设备命名约定相似;同时受到加密保护,不需要任何注册;同时还使用 webRTC 系统进行点对点传输。
然而,ShareDrop 和 Snapdrop 在很多方面也有所不同, 以下是 ShareDrop 和 Snapdrop 之间最显着的差异。
离线工作
Snapdrop 需要有效的互联网连接才能完成文件传输,而 ShareDrop 则不需要。
ShareDrop 只需要互联网即可在两个系统之间建立连接。 完成后,即使互联网断开也可以传输文件。
替代连接选项
Snapdrop 允许使用标准接口进行连接, 没有其他选择。
但 ShareDrop 允许使用其他选项来连接设备。 例如,可以点击 ShareDrop 界面上的 “.” 符号,它会生成一个唯一的图像名称,然后可以将该图像名称共享给其他设备进行连接。
本地网络外的文件共享
ShareDrop 还允许开发者将数据和文件共享到未连接到网络的设备。
同样,可以使用 . 按钮并共享图像名称以启动该过程。 ShareDrop 还可以使用二维码来传输文件,而 Snapdrop 没有二维码功能。
内容预览
这是比较 ShareDrop 与 Snapdrop 时的另一个重要区别。 ShareDrop 使用内容预览。 也就是说,发送文件后,接收者将获得文件预览,并弹出一个窗口询问他们是否要继续。
Snapdrop 没有此功能,这意味着一旦发送者选择并发送文件,接收者就只能接收该文件。 他们无法先进行预览,也无法选择接受或拒绝文件传输。
深色模式
Snapdrop 具有深色模式界面,可能适合一些有辅助功能问题的用户,而 ShareDrop 则没有这样的功能。
ShareDrop 本地开发
ShareDrop 还支持本地部署,可以按照下面的流程进行:
- 设置 Firebase
- 注册 Firebase 帐户并创建数据库。
- 转到 “安全规则” 选项卡,单击 “加载规则” 按钮并选择 firebase_rules.json 文件。
- 记下当前数据库 URL 及其 secret,可以在 “secret” 选项卡中找到该信息。
- 运行 npm install -g ember-cli 以安装 Ember CLI。
- 运行 yarn 来安装应用程序依赖项。
- 运行 cp .env{.sample,} 创建 .env 文件。 Foreman 在本地运行应用程序时将使用此文件来设置环境变量。
- SECRET 密钥用于加密 cookie 并根据 / 路由的公共 IP 地址生成房间名称,可以是任何随机字符串。可以使用例如:date | md5sum 生成一个字符串
- NEW_RELIC_* 密钥仅在生产中需要
- 运行 yarn development 来启动应用程序。
ShareDrop 部署
ShareDrop 支持与 Heroku 进行集成部署。
Heroku 是一个支持多种编程语言的云平台即服务(PaaS),在 2010 年被 Salesforce.com 收购。Heroku 作为最元祖的云平台之一,从 2007 年 6 月起开发,当时它仅支持 Ruby,但后来增加了对 Java、Node.js、Scala、Clojure、Python 以及 PHP 和 Perl 的支持。
要在 Heroku 中部署 ShareDrop 可以按照如下步骤完成。
首先,创建一个新的 Heroku 应用程序:
heroku create <app-name>
// 项目创建
接着将应用程序推送到 Heroku 存储库:
git push heroku master
// 推送代码
本文总结
本文主要和大家介绍 ShareDrop ,其是一款受 Apple AirDrop 服务启发的 Web 应用程序,其允许用户直接在设备之间传输文件而无需先将文件上传到任何服务器。因为篇幅问题,关于 ShareDrop 只是做了一个简短的介绍,但是文末的参考资料提供了大量优秀文档以供学习,如果有兴趣可以自行阅读。如果大家有什么疑问欢迎在评论区留言。
参考资料
https://github.com/szimek/sharedrop
https://play.google.com/store/apps/details?id=com.sharedropmobile&hl=en_US
https://www.sharedrop.io/
https://mobiletrans.wondershare.com/apps-review/sharedrop-vs-snapdrop.html
- 上一篇:web前端开发 后端开发
- 下一篇:websocket协议,tcp分包与粘包解决
相关推荐
- Django零基础速成指南:快速打造带用户系统的博客平台
-
#python##服务器##API##编程##学习#不是所有教程都值得你花时间!这篇实战指南将用5分钟带你解锁Django核心技能,手把手教你从零搭建一个具备用户注册登录、文章管理功能的完整...
- iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点
-
这款Bootstrap半越狱工具终于更新,离上一次更新已相隔很久,现在推出1.2.9版本,主要为内置两点功能进行更新,也是提升半越狱的稳定性。如果你正在使用这款半越狱工具的,建议你更新。注意!...
- iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具
-
本文主要讲Bootstrap半越狱工具更新相关内容。如果你是iOS16.0至16.6.1和17.0系统的,想体验半越狱的果粉,请继续往下看。--知识点科普--Bootstrap...
- SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统
-
今日推荐:SpringBoot整合工作流引擎Acticiti的源码推荐理由:1、SpringBoot整合工作流引擎Acticiti系统2、实现了三级权限结构3、持久层使用了mybatis框架4、流程包...
- SpringCloud自定义Bootstrap配置指南
-
在SpringCloud中自定义Bootstrap配置需要以下步骤,以确保在应用启动的早期阶段加载自定义配置:1.添加依赖(针对新版本SpringCloud)从SpringCloud2020...
- Python使用Dash开发网页应用(三)(python网页开发教程)
-
PlotlyDash开发Web应用示例一个好的网页设计通常都需要编写css甚至js来定制前端内容,例如非常流行的bootstrap框架。我们既然想使用Dash来搭建web应用,很大的一个原因是不熟悉...
- Oxygen XML Editor 27.1 中的新功能
-
OxygenXMLEditor27.1版是面向内容作者、开发者、合作者和出版商的行业领先工具包的增量版本。在27.1版本中,AIPositronAssistant得到了增强,包括用于...
- 【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力
-
一、结论写在前面论文提出了Mini-Gemini,一个精简而强大的多模态VLM框架。Mini-Gemini的本质在于通过战略性框架设计、丰富的数据质量和扩展的功能范围,发掘VLM的潜在能力。其核心是补...
- 谐云课堂 | 一文详解分布式改造理论与实战
-
01微服务与分布式什么是分布式?首先,我们对上图提到的部分关键词进行讲解。单体,是指一个进程完成全部的后端处理;水平拆分,是同一个后端多环境部署,他们都处理相同的内容,使用反向代理来均衡负载,这种也叫...
- 基于Abaqus的手动挡换挡机构可靠性仿真
-
手动挡,也称手动变速器,英文全称为Manualtransmission,简称MT,即用手拨动换挡操纵总成才能改变变速器内的齿轮啮合位置,改变传动比,从而达到变速的目的。家用轿车主要采用软轴连接的换挡...
- 【pytorch】目标检测:彻底搞懂YOLOv5详解
-
YOLOv5是GlennJocher等人研发,它是Ultralytics公司的开源项目。YOLOv5根据参数量分为了n、s、m、l、x五种类型,其参数量依次上升,当然了其效果也是越来越好。从2020...
- 超实用!50个非常实用的PS快捷键命令大全分享
-
今天,给大家介绍50个非常实用的快捷键命令大全,大家伙都是设计师,关于软件使用那是越快越好啊。一、常用的热键组合1、图层混合模式快捷键:正常(Shift+Option+N),正片叠底(Shif...
- Pohtoshop中深藏不露的小技巧(科目一考试技巧记忆口诀看完必过)
-
邢帅教育ps教程为大家总结了一些Pohtoshop中深藏不露的小技巧,可以帮助到大家在设计时减少不必要的麻烦,提高工作效率哦~~~1.设置网格线保持像素完美不在1:1分辨率下也能保持像素完美,可以...
- Ganglia监控安装总结(监控安装工作总结)
-
一、ganglia简介:Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统,如集群和网格。它是基于分层设计,它使用广泛的技术,如XML数据代表,便携数据传输,RRDtool用于数据...
- 谁说Adobe XD做不出好看的设计?那是你没搞懂这些功能
-
AdobeXD的美化栏具有将设计视图美化的功能,它能使界面设计和原型设计更漂亮、更吸引眼球。美化栏的7个功能包括竖线布局设计、横线布局设计、重复网格、图形大小和位置设置、响应式调整大小、文字美化以及...
- 一周热门
- 最近发表
-
- Django零基础速成指南:快速打造带用户系统的博客平台
- iOS 17.0 Bootstrap 1.2.9 半越狱来啦!更新两点
- iOS 16.x Bootstrap 1.2.3 发布,支持运行清理工具
- SpringBoot整合工作流引擎Acticiti系统,适用于ERP、OA系统
- SpringCloud自定义Bootstrap配置指南
- Python使用Dash开发网页应用(三)(python网页开发教程)
- Oxygen XML Editor 27.1 中的新功能
- 【LLM-多模态】Mini-Gemini:挖掘多模态视觉语言模型的潜力
- 谐云课堂 | 一文详解分布式改造理论与实战
- 基于Abaqus的手动挡换挡机构可靠性仿真
- 标签列表
-
- HTML 基础教程 (29)
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 选择器 (30)
- CSS 轮廓 (30)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 中级教程 (30)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)