设备之间直接传文件¶
两台设备连上同一个网络,文件直接从一台到另一台。中间没有服务器,文档站这一侧拿不到任何一个字节。
这一页属于实验区,目的是量数字,不是拿来日常用的工具。
为什么要量这个¶
文档站的离线内容目前只能透过网络更新。QR code 影格串流每秒送一到三 KB,传一份几 MB 的离线内容不成立。
同一个局域网里的直接连线快得多,代价是两台设备要先交换一段描述,而那一步通常靠一台服务器。把那段描述压到够小,就能用 QR code 交换,整条路不需要任何服务器。这一页先量那段描述有多大,以及实际传输有多快。
两台设备怎么测¶
两台连上同一个网络,自己开的热点最可控。
- 一台按「我先开始」,第二区会出现一张 QR code
- 另一台按「对方先开始」,再按第三区的「用相机扫对方的 QR code」,对准第一台的屏幕
- 扫到之后第二台会自己产生回应,第二区换成它的 QR code
- 第一台按第三区的扫描,对准第二台的屏幕,扫到就连上了
第一次按扫描时浏览器会问能不能用相机,允许才扫得了。相机画面在这一页里解码,不会送到任何地方。
相机不能用的时候,第二区底下的文字框可以整段复制交给对方,贴进第三区按套用,效果一样。
连上之后任一边都可以送东西过去。收的一端会算 SHA-256 跟来源比对,数字一致才算这一次成功。
已知会失败的情况¶
公共 Wi-Fi 普遍开启设备隔离,同一个网络里的设备连不到彼此,而那正好是最需要这个功能的场合。遇到这种网络,页面会停在候选搜集完成却连不上。
Tor Browser 把 WebRTC 整个关掉,因为它会泄漏你真正的 IP。那个版本开不了这一页的功能。
企业网络与部分访客网络会挡掉多播,浏览器用来认出对方的 .local 名称因此解析不到。
这一页不送任何数据¶
页面没有 fetch、XMLHttpRequest、sendBeacon 与 WebSocket,也不加载外部资源。连线设定里没有 STUN 也没有 TURN,连得上就是靠同一个局域网里的候选地址。
文件内容只在两台设备之间流动。导出记录的时候,IP 与 mDNS 名称会先遮掉再写进文件。
测完请回报¶
传之前先在第五区那一栏填上这次的环境,例如「自架热点,Mac Chrome 对 iPhone Safari」。那一行会跟着每一笔记录一起导出,之后整理结果时才对得起来。
按「导出记录」存下 JSON,贴到 issue #553。两台设备各导出一份,收送两侧的耗时才都有。
失败的结果一样有用。判准之一就是「失败要多快说得出来」,卡在转圈三分钟的体验跟直接说不支持,对现场的人差别很大。