issues
search
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 提供一种更加通用的连接策略
要设计一种抽象的流程,来使得“两个模块之间可以进行更加紧密的互联”。 我列举一种场景: 比方说我A模块在手机,B模块在PC,这时候A可能通过某个 https/wss 链接找到B了,二者现在通过https/wss这种协议进行链接。 然后二者尝试进行“更加紧密”的互联,在一些适配器的嗅探之下,它们发现两种链路:一种是通过WebRTC协议进行直连,一种是通过局域网UDP/QUIC互联。于是适配器进一步工作,UDP/QUIC链路最先成功建立连接。比原来的https/wss延迟很低速度更快,于是将这个链路的优先级提高,默认使用该链路。几秒后,WebRTC的握手也完成了,发现延迟并没有当前UDP/QUIC的更快,于是保留现在的链路选择。
比方说jmm之间:
js-process/worker-A
向
js-process/main
这个线程发送一个uuid+MessagePort
然后再用 A-ipc-B 去发送这个 uuid
B收到这个uuid后,向
js-process/main
询问uuid是否存在 a. 发现存在,得到MessagePort,于是向 B-ipc-A 发送一些连接凭证,于是“更加紧密的互联”建立成功,切换使用新路径。 b. 如果不存在,那么向 B-ipc-A 发送失败讯息,于是保持原有的通讯路径
策略
首先需要做好适配器,然后做连接策略。
基于成功失败
基于连接快慢
基于连接速度
TODO 提供一种更加通用的连接策略
比方说jmm之间:
js-process/worker-A
向js-process/main
这个线程发送一个uuid+MessagePortjs-process/main
询问uuid是否存在 a. 发现存在,得到MessagePort,于是向 B-ipc-A 发送一些连接凭证,于是“更加紧密的互联”建立成功,切换使用新路径。 b. 如果不存在,那么向 B-ipc-A 发送失败讯息,于是保持原有的通讯路径策略
首先需要做好适配器,然后做连接策略。