【问题标题】:WebRTC - JSEP: cannot connect peer between two different networkWebRTC - JSEP:无法在两个不同网络之间连接对等点
【发布时间】:2021-02-28 20:47:41
【问题描述】:

我不知道有没有人发过这个,但我不想问。我的问题是这样的:

  • 我可以使用 apprtc.appspot.com 的两个 Chrome 选项卡(这意味着我打电话给自己)进行视频聊天。一切正常。
  • 如果这两台笔记本电脑在同一个网络上,我也可以将 apprtc 与两台不同的笔记本电脑一起使用。我在代理后面使用了我大学的网络。
  • 但是,如果我在一台笔记本电脑上使用调制解调器,另一台笔记本电脑在 LAN 上使用 apprtc,它就无法工作。

谁能解释发生了什么?这是 STUN/ICE 问题吗?还是 JSEP?

【问题讨论】:

    标签: webrtc


    【解决方案1】:

    公开演示包括 STUN 服务器,但不提供 TURN 服务器,因为运行免费 TURN 服务器的带宽很昂贵。 STUN 得到了很多思考,但不是所有的 NAT / 防火墙,但远没有 TURN 那么多。您可能处于 TURN 可以工作(但您没有 TURN 服务器)但 STUN 没有的情况。

    【讨论】:

      【解决方案2】:

      我已经能够在两个不同的 NAT 后面使用http://apprtc.appspot.com/ 的演示。所以它至少在理论上可以工作;但众所周知,STUN、TURN 和 ICE 并非万无一失。对于初学者,如果有人阻止了对端口 19302(apprtc 演示使用的 STUN 服务器的端口)的访问,则防火墙穿越将永远无法启动。

      基本的故障排除步骤是打开 Chrome 开发者工具 (ctrl-shift-i) 并查看控制台中是否有任何错误。如果没有发现任何有趣的东西,您需要编写自己的演示应用程序版本,这一次有更好的错误处理。例如,apprtc 演示假定某些事情不能被认为是理所当然的,例如peerConnection.setLocalDescripton()peerConnection.setRemoteDescription() 会成功。在生产代码中,您确实需要在这些代码上实现成功和失败回调 - 这样可以更好地了解可能出现的问题。

      【讨论】:

      • 如果您使用的是典型的家用路由器,那么您的防火墙(例如它)就位于此处。但是控制台日志显示了什么?
      • 我看到候选消息的地址数据填充了我的私有 IP,我刚刚使用 telnet 测试了端口 19302 的 stun.l.google.com 但它无法连接
      • 您可能想尝试使用不同的 stun 服务器。您可以访问此列表中的任何一个吗? voip-info.org/wiki/view/STUN
      • 我试过这个 stun.stunprotocol.org 并连接到服务器,但我的 webrtc 仍然无法连接不同的网络。 peerconnection有时能得到公网ip,有时不能,所以候选数据有不同的ip
      【解决方案3】:

      AppRTC 默认使用 stun。 TURN 是“更好的”(根据我的理解),但我记得 Justin Uberti 说公共 TURN 服务器可能会被滥用(或类似的东西)。

      STUN 在企业级子网上经常失败,因为它无法“应对”不友好的 NAT 寻址。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        相关资源
        最近更新 更多