【发布时间】:2021-05-04 13:27:12
【问题描述】:
在 UHST 2.0 (https://github.com/uhst/uhst-client-js/commit/5888b6d4583c91bd30a04d289e0ff0aa9ce9b5f0) 中,WebRTC 不再是对等点之间的默认传输协议,而是引入了新的 RelaySocket。这个 RelaySocket 是什么,它仍然是点对点的还是依赖于服务器?
【问题讨论】:
在 UHST 2.0 (https://github.com/uhst/uhst-client-js/commit/5888b6d4583c91bd30a04d289e0ff0aa9ce9b5f0) 中,WebRTC 不再是对等点之间的默认传输协议,而是引入了新的 RelaySocket。这个 RelaySocket 是什么,它仍然是点对点的还是依赖于服务器?
【问题讨论】:
简短回答:不,使用 RelaySocket 的连接不是点对点的。
在 UHST 1.x 中,中继用于发送 WebRTC 连接(ICE 对等交换)的信号,但一旦成功建立 WebRTC 数据通道,客户端将关闭中继连接,所有数据传输都通过 WebRTC。主机保持中继连接打开,以向需要 ICE 交换的新对等方发出信号。
UHST 2.0 引入了 RelaySocket 的概念,它是通过中继而不是 WebRTC 实现的 UHST 协议。 WebRTC 仍然与 JS 客户端捆绑在一起,可以启用。使用 RelaySocket,中继充当中间人,在客户端和主机之间转发消息。
切换到 RelaySocket 的主要原因是为了实现与移动 UHST 客户端(Flutter、iOS、Android)的互操作性,这些客户端的 WebRTC 实现并不容易获得或标准。此外,如果将 UHST 移植到 IoT 设备,WebRTC 可能不可用。
【讨论】: