BioforestChain / dweb_browser

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

【增强】💪 连接优化适配器 #108

Open waterbang opened 5 months ago

waterbang commented 5 months ago

TODO 提供一种更加通用的连接策略

  1. 要设计一种抽象的流程,来使得“两个模块之间可以进行更加紧密的互联”。 我列举一种场景: 比方说我A模块在手机,B模块在PC,这时候A可能通过某个 https/wss 链接找到B了,二者现在通过https/wss这种协议进行链接。 然后二者尝试进行“更加紧密”的互联,在一些适配器的嗅探之下,它们发现两种链路:一种是通过WebRTC协议进行直连,一种是通过局域网UDP/QUIC互联。于是适配器进一步工作,UDP/QUIC链路最先成功建立连接。比原来的https/wss延迟很低速度更快,于是将这个链路的优先级提高,默认使用该链路。几秒后,WebRTC的握手也完成了,发现延迟并没有当前UDP/QUIC的更快,于是保留现在的链路选择。

比方说jmm之间:

  1. js-process/worker-Ajs-process/main 这个线程发送一个uuid+MessagePort
  2. 然后再用 A-ipc-B 去发送这个 uuid
  3. B收到这个uuid后,向 js-process/main 询问uuid是否存在 a. 发现存在,得到MessagePort,于是向 B-ipc-A 发送一些连接凭证,于是“更加紧密的互联”建立成功,切换使用新路径。 b. 如果不存在,那么向 B-ipc-A 发送失败讯息,于是保持原有的通讯路径

策略

首先需要做好适配器,然后做连接策略。

  1. 基于成功失败
  2. 基于连接快慢
  3. 基于连接速度