【问题标题】:How browser knows that he need to connect to stun/turn server?浏览器如何知道他需要连接到 stun/turn 服务器?
【发布时间】:2020-02-19 22:15:08
【问题描述】:

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

谢谢。

【问题讨论】:

  • 因为您在实例化 RTCConnection 时将 STUN/TURN 服务器列表提供给它......?!

标签: webrtc stun


【解决方案1】:

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 数据包。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多