BioforestChain / dweb_browser

BioforestChain Infrastructure
https://docs.dweb-browser.org
MIT License
21 stars 5 forks source link

【起草提案中...】 local-p2p.sys.dweb/p2p.std.dweb #217

Open Gaubee opened 2 months ago

Gaubee commented 2 months ago

简介

  1. p2p.std.dweb 将会是一个更大范围的抽象理念,目的是为更多样的网络提供一种通用的点对点模式。它并不能涵盖所有需求,但能代表“以人为本”为出发点的点对点需求。
  2. local-p2p.sys.dweb 是一个专注于使用本地硬件实现点对点互联的方案。

    为未来的 wan-p2p.sys.dweb 广域网点对点打下基础,当这种场景会更加复杂,因为可能需要考虑多方利益与模式,需要结合多提案来做联合。

  3. 主要参考资料 wicg/local-peer-to-peer

p2p.std.dweb 接口设计

  1. SSE /makeDiscoverable?group=string&nickname=string 启用网络发现,持续向环境广播自身的存在,其间可以搜索到握手请求,会通过 ServerEvent 返回给客户端,直到客户端关闭这个 SSE。
  2. SSE /discover?group=string 扫描可用网络
  3. WS /connect 建立连接
  4. POST /share 数据分享(单向发送数据)

local-p2p.sys.dweb 实现路径

  1. 主要技术
    1. 有线或无线局域网,使用 UDP 组播
    2. Wi-Fi Direct (WIFI 直连)
  2. 次要技术(可以不支持,但需要了解并参考,确保加购设计的可扩展性)
    1. Bluetooth Low Energy (蓝牙协议)
    2. Thread (network protocol 线程网络)
      1. IOS 15+ 引入
      2. Android 15+ 引入,但可以向下兼容
    3. Nearlink (星闪网络协议,未来国内的一些 Android 设备可能会引入相应芯片的支持)
    4. 其它:声波、动态二维码、NFC,可以用于做 小空间内的 单向的、匿名的、小数据 的传输。主要用在近场分享
waterbang commented 2 months ago

进程

Gaubee commented 2 months ago

接口的上层设计中,默认屏蔽 协议细节(指使用蓝牙或者局域网),转而使用一些抽象的定义来使用链路,比如使用“优先级 Priority”来使用网络资源。

  1. Highest 实时语音、视频通话、实时游戏数据同步、紧急通知

    适用于最关键、实时性最高的网络资源需求场景,这类资源使用需要立即得到响应,否则可能会导致服务中断或用户体验急剧下降

  2. High 流媒体播放、大文件的快速传输、区块链中的交易广播

    通常为高频率或需要优质服务质量的任务,没有紧急性的需求,但仍需要稳定和快速的传输

  3. Medium 网页浏览、数据共享、及时消息

    常规的应用场景,不紧急,也不需要最高质量的服务,但应保证相对的稳定性。

  4. Low 非关键性后台同步(自动备份、定期同步)、非实时消息传递(用户不在线时的消息传递)、应用更新下载

    通常是后台任务或对时间不敏感的操作。这些任务可以允许更长的延迟,且对传输速度要求不高

  5. Lowest 发送统计信息、分布式计算中的低优先级任务(比如一些设备资源的贡献)、不常访问的数据备份、分布式网络中的心跳包、订阅后台更新

    可以完全容忍延迟或只需在网络完全空闲时进行的任务

参考资料:

  1. fetchPriority
  2. navigator.getUserMedia

    参考这里 video 的设计,它是通过传入一些需求参数,然后浏览器会自动给它匹配一个相应的媒体流