这款简单、易上手的跨平台传输工具,可能是 AirDrop 的最佳替代品( 二 )


这款简单、易上手的跨平台传输工具,可能是 AirDrop 的最佳替代品
本文插图
以 PWA 为载体
在第一次用 Snapdrop 时 , Chromium 内核浏览器(e.g. Chrome、Edge)会询问你是否要安装Snapdrop 。 PWA 有着轻量化的优势 , 占用空间小到可以忽略 。
这款简单、易上手的跨平台传输工具,可能是 AirDrop 的最佳替代品
本文插图
PWA 安装弹窗
在测试过程中 , 我还发现 Snapdrop 支持 PWA 一个重要的特性——离线使用 。 Snapdrop 网页会自动进行缓存 。 之后就算没有连接到互联网 , 就像一个安装好的 App 一般 , 你仍然能打开 Snapdrop , 进行局域网文件传输 。
另外它也支持系统通知 , 当授予通知权限后 , 每当有新的文件传输完成 , 便会以原生通知形式出现 。
这款简单、易上手的跨平台传输工具,可能是 AirDrop 的最佳替代品
本文插图
macOS 通知 Banner速度尚可
这个速度和 AirDrop 相比 , 实在拉胯 。 AirDrop 能跑满 802.11n 的宽带(33 Mbps) , Snapdrop 显然还差得远 。 不过 , 又不是不能用对吧?发送一些小文件非常好用 。
奇怪的是 , 从 iPhone 发送 照片到 macOS 电脑时 , 会自动转换成。好像是 Safari 为了保证兼容性做的自动转换 。
要避免格式转换 , 把照片存到 iOS 的文档 App , 在选择文件的时候 , 别选照片 , 而是选文件 。
其他细节
Snapdrop 在隐私方面让我颇为放心:
第一 , 它是开源的 。
第二 , Snapdrop承诺他们不会存储任何用户资料 。
第三 , 技术上用户隐私得以保护 。 WebRTC 在文件传输时自行加密 , 防止其他人(包括 Snapdrop 团队)窥探用户文档 。 如果以上无法打动你 , 你甚至可以托管你的 Docker映像 , 建立私人的 Snapdrop 网页 。
虽然我觉得 PWA 已经足够好用 , 你仍然能使用开源社区为 Snapdrop 开发的第三方客户端 。
至于传输原理 , Snapshare 使用了 WebRTC 协议提供的 P2P1功能 。 WebRTC 受 Apple、Google、Microsoft、Mozilla、Opera 支持 , 是 W3C 下的开源、免费标准 。 开发者利用简单的 API 接口 , 就能在浏览器开发端对端实时通信的网络应用 。
WebRTC 定义了三个常用的 Javascript API:
获取用户机器上的多媒体文档 。
建立 P2P 连接 。 负责信号处理、编码、端对端通信、安全、宽带管理 。
双向传输数据 。
两个 peers 之间 , 不会「嘛哩嘛哩哄」神奇地便连接起来了 。 能看到原理图中 , 两个客户端之外 , 还有一个节点称作 Signaling 服务器 。
说好的 P2P 去中心化 , 怎么冒出来一个服务器呢?这个 Signaling 服务器还不归 WebRTC 标准管 。
Signaling 服务器的作用类似相亲里的媒人 。 一开始 , 两个客户端互不认识 。 他们需要一个中介人去介绍 , 才知道另一方的存在 , 而后使用 WebRTC 定义的 API 进行 P2P 连线及数据传输 。 就像相亲中 , 通过媒人相识 , 而后才能约出来吃饭 。 没相亲过 , 应该是这样吧 。 (逃