大概思路是这样的。。
- 网站 A.example.com 能访问时。
- 用户 A 访问 A.example.com ,并提交自己的公网 IP
- 用户 B 访问 A.example.com ,获取到 A 的 IP,把网站内容(前端部分)利用 Service Worker 保存在本地,把网站数据(部分数据)保存在本地,把 A 的 IP 保存在本地
- 由于某种众所周知的原因,A.example.com 无法访问了。
- 此时 Service Worker 检测到网站断连,于是使用 WebRTC 连接 A,并获取以下数据
a) A 处保存的可用节点 IP 列表
b) 最新版本的前端 js (即 service worker 本身
c) A 处保存的网站数据(根据需要获取
通过 hash + 网站私钥签名 的方式来确保 最新版本的前端 js 是真正的网站自身发布的
用户自己发布的内容,通过 hash + 签名 的方式确保数据是由真正的用户自身发布的
通过 默克尔树 来获取指定的数据。