首页 > 解决方案 > 在 webRTC 中,如果我使用 srflx 获得远程冰候选,这是否意味着连接应该有效?(编辑:不,这还不是全部)

问题描述

我正在尝试为我们的一位客户在现有的 ionic 3 项目中实施视频通话,我已将google 代码实验室用作样板代码,用于通过 Firebase 实时数据库发送报价和回答。您之前可能听说过(读过):“我的 webRTC 在外部网络中不起作用”,答案是:

  1. 使用你自己的 STUN 服务器,不要依赖像谷歌这样的免费 stun 服务器。
  2. 使用 TURN 服务器备份失败的 stun 尝试。
  3. 在实施之前了解 webRTC。

我想问的是:

  1. 在我当前的设置中(使用免费的 google stun 服务器)使用两个不同的网络进行测试,我看到使用 typ srflx 的远程候选人,我也看到了 typ host 但由于它是不同的网络,所以它对我没有兴趣,显然没有中继,因为没有 TURN 服务器。我还看到我正在为本地候选人提供 srflx,这是否意味着我的设置应该足以建立连接?我花了一些时间试图弄清楚这一点,我在这篇博文中找到了很多信息,但我无法完全调试这种情况。

  2. 假设我们想实现我们自己的 TURN/STUN 设置,我们的呼叫将几乎完全在同一个国家,所以我们不需要多个服务器。有人会对以下情况进行估计:1.每分钟需要多少数据需要一个视频通话(球场)?2.我们的客户喜欢他的项目的谷歌云服务,在谷歌云平台上为这个项目旋转一个TURN服务器需要多少钱(同样只是一个球场)?有没有关于最佳设置的想法(我在想 coturn 并且正在查看这个google coturn 实现)?

谢谢你们。

编辑:经过更多挖掘,我意识到我正在测试的不同网络之一位于对称 nat 后面,这是一个很好的 jsfiddle,用于测试我在这篇文中找到的 nat 类型。在对称 nat 的情况下,收到的 iceCandidate 不适合连接,您必须拥有 TURN 服务器。所以我想这会处理第一部分。第二部分的任何其他数据将不胜感激。

标签: javascriptfirebaseionic3webrtc

解决方案


好的,所以在所有这些挖掘之后,我想我可以同意第三种表示法(不,我仍然没有完全理解它甚至没有接近),如果这可能对任何人有所帮助,我会分享我的经验。我被带入一个项目(ionic 3),并被告知要查找并实施视频聊天。我们选择了 webRTC。据我所知,webRTC 是唯一广泛使用的开源选项。在我们国家,大量的蜂窝用户落后于对称 nat,因此与他们的 p2p 将无法正常工作。我测试了一个 twilio TURN 服务,一切都立即开始工作。基本呼叫的粗略数字约为每分钟 1.5Mb。感谢任何偶然发现这一点并试图弄清楚他是否可以提供帮助的人。


推荐阅读