【问题标题】:Checking for WebRTC connectivity - reliable methods检查 WebRTC 连接 - 可靠的方法
【发布时间】:2018-06-28 05:40:05
【问题描述】:

我有一个实时视频聊天应用程序,我使用支持 STUN/TURN 和 UPD/TCP 传输的 TURN 服务器。

有时用户可以连接到网络,这阻止WebRTC连接只是无法发生的那么多端口和协议(通常是公司网络)。我想在用户尝试相互连接之前检查 WebRTC 连接是否可行(实际上,执行技术检查)。

我该怎么做?我脑子里的想法:

  1. 尝试通过 WebRTC下载托管的数据块(例如音频文件) - 是否可行,这是否足以确保入站和出站连接都打开?
  2. 使用 TURN 服务器作为主机 建立连接并查看它是否失败(不知道我是否可以这样做)
  3. 使用 Flash 尝试通过特定端口和协议下载/上传大量数据。甚至可能使用 Cirrus。但是,我不确定从 WebRTC 的角度来看这个测试是否准确。
  4. 还有其他想法吗?

附加要求:检查技术必须支持 Chrome、Opera 和 Firefox。最好还通过 Temasys 插件访问 IE/Safari。

第 1 版 - 收集 ICE 候选人是个好主意,但它并非 100% 可靠。一旦我检查了我的应用程序中的日志,它实际上收集了中继 ICE 候选者,但视频/音频传输失败。在 Apprtc 上也进行了测试,得到了相同的结果。

【问题讨论】:

    标签: network-programming connection protocols webrtc ports


    【解决方案1】:

    最好的检查方法是先连接一个数据通道。您的用户不会注意到。如果可行,那么几乎可以保证音频和视频可以正常工作。作为奖励,当您的用户准备好时,您可以使用数据通道发出信号以实现超快速连接。

    【讨论】:

    • 我已经提到,作为技术检查的一部分,我必须提前检查。很遗憾,无法连接到真实用户。
    • @igorpavlov 为什么不呢?它不需要许可或用户交互。您愿意下载大量数据。那有什么不同?请明确本次“技术检查”的要求。
    【解决方案2】:

    典型的 WebRTC 方法是创建与 STUN 和 TURN 服务器的对等连接,调用 createOffer 和 setLocalDescription 并观察收集的候选人。参见例如http://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

    如果您获得了 srflx 候选者,您的 stun 服务器就可以工作(即 UDP 未被阻止)。更有趣的是你是否得到接力候选人。如果你这样做了,使用 TURN 作为后备将起作用。如果使用 TURN/TCP,质量可能会受到影响。如果你没有得到接力候选人......电话不太可能奏效。

    【讨论】:

    • 你确定这个方法可靠吗?请参阅此问题的第 1 版。
    • 判断本地客户端是否能联系上是可靠的。没有办法知道远程客户端是否可以提前做同样的事情。
    • 这个和另一个效果很好的答案的组合是实际创建两个对等连接,将 icetransports 设置为中继,并通过 TURN 服务器创建一个数据通道返回“你自己”,然后泵一些消息。检查您是否可以获得中继候选人以及建立中继数据通道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多