WebRTC:确定PeerConnection中使用的TURN服务器

mid*_*ido 7 javascript webrtc turn

场景:您想知道是否正在使用TURN服务器进行特定呼叫,以及是否正在使用您在创建PeerConnection期间提供的TURN服务器阵列中的哪一个.现在有两种选择:

  • Wireshark:但是当你在公司代理服务器后面并且TURN服务器在那之外时,wireshark会将代理IP显示为目的地.(也没有提到在后台运行它的不便)
  • 浏览统计页面并查找,chrome - > chrome:// webrtc-internals和Firefox - > about:webrtc

我想使用上面两个的替代方法,以编程方式确定这一点,所以我不必离开我的应用程序页面.

jib*_*jib 6

更新:我已经更新了示例以遵循最新的规范,使用maplike getStats

以下方法遵循规范,目前仅适用于 Firefox,因为 Chrome 目前实现getStats()不正确。希望适配器.js polyfill 的一个版本应该很快可用,它也可以在 Chrome 中运行。

当你在 Firefox 中运行这个 fiddle时,你会看到:

checking
connected
Does not use TURN
Run Code Online (Sandbox Code Playgroud)

这是因为该示例同时提供了 STUN 和 TURN 服务器。但是当我修改配置以仅使用 TURN 时iceTransportPolicy: "relay",我看到:

checking
connected
Uses TURN server: 10.252.73.50
Run Code Online (Sandbox Code Playgroud)

请注意,我使用的轮流服务器位于 VPN 后面,因此它对您不起作用,但您可以随意修改您自己的服务器的小提琴(除非您希望信息公开,否则不要保存它!)

虽然我没有使用多个轮流服务器进行测试,但您可以看到显示的 IP 地址与配置的轮流服务器相匹配,因此使用这种方法应该可以判断使用的是哪台服务器。

checking
connected
Does not use TURN
Run Code Online (Sandbox Code Playgroud)
checking
connected
Uses TURN server: 10.252.73.50
Run Code Online (Sandbox Code Playgroud)