浏览器如何知道他需要连接到 stun/turn 服务器?

How browser knows that he need to connect to stun/turn server?

例如,我想与 WEBRtc 分享媒体陷阱。 显然,如果我想通过 NAT。 我需要使用 STUN/TURN 服务器。 当 WEBRtc 开始分享 ICE 候选人时 - 浏览器如何知道 STUN/TURN 服务器存在并且它应该先到那里?

谢谢。

WebRTC in Browser开始分析网络连接状态(事实上,标准并没有说明什么时候开始,而且对于很多浏览器来说,WebRTC在创建相应的对象后立即开始研究网络,所以以免在连接时造成不必要的延迟)。开发人员在第一步创建 WebRTC 对象时,至少应该传递 STUN 服务器的地址。这是一个服务器,响应 UDP 数据包“我的 IP 是什么”,传输接收到该数据包的 IP 地址。 WebRTC 使用 STUN 服务器获取“外部”IP 地址,将其与“内部”IP 地址进行比较,看看是否有 NAT。如果是这样,NAT 使用哪些反向端口来路由 UDP 数据包?

浏览器上的 WebRTC 会不时调用 onicecandidate 回调,传输带有第二个连接参与者信息的 SIP 数据包。此数据包包含有关内部和外部 IP 地址、连接尝试、NAT 使用的端口等信息。开发人员使用信令在浏览器之间传输这些数据包。传输包使用addIceCandidate()方式发送给WebRTC。 一段时间后,WebRTC 将建立点对点连接。或者如果 NAT 会干扰将无法。对于这种情况,开发人员可以传输 TURN 服务器的地址,该服务器将用作外部连接元素:两个浏览器都将通过它传输带有语音或视频的 UDP 数据包。

您在最初创建 RTCPeerConnection 时通过 STUN/TURN 服务器配置。