首页 > 解决方案 > 浏览器如何知道他需要连接到 stun/turn 服务器?

问题描述

例如,我想与WEBRtc. 显然,如果我想通过 NAT。我需要使用STUN/TURN服务器。什么时候WEBRtc开始分享ICE候选人——浏览器如何知道STUN/TURN服务器存在并且应该首先去那里?

谢谢。

标签: webrtcstun

解决方案


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

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

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


推荐阅读