Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Gaubee opened this issue Sep 2, 2024 · 2 comments
Open

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

Gaubee opened this issue Sep 2, 2024 · 2 comments

Comments

@Gaubee
Copy link
Contributor

Gaubee commented Sep 2, 2024

简介

  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
Copy link
Collaborator

进程

  • 提供局域网模块互相访问能力。
  • 提供近场蓝牙模块通信能力。
  • 提供内网穿透能力。
  • 提供广域网代理转发能力。
  • 提供智能路由选择能力。【增强】💪 连接优化适配器 #108

@Gaubee
Copy link
Contributor Author

Gaubee commented Sep 10, 2024

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

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

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

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

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

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

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

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

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

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

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

参考资料:

  1. fetchPriority
  2. navigator.getUserMedia

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants