如何检查WebRTC是否使用中继服务器?

12

我读到 WebRTC 在因为防火墙的原因无法直接点对点通信时会使用中继服务器。

那有没有办法检查这个情况呢?

2个回答

13

当你建立WebRTC连接时,你需要设置STUN和/或TURN让网页浏览器使用。如果你告诉网页浏览器这两个选项,网页浏览器将首先尝试使用STUN。然后,在不成功的情况下,它将尝试使用TURN。

'Relay服务器'是一个TURN服务器。

据我所知,没有标准的方法可以知道网页浏览器决定使用哪个选项:STUN还是TURN。

另一方面,如果你是TURN服务器的所有者,你可以看到Web客户端是否使用它,然后将此信息发送给客户端。

更新

这是我的代码:https://github.com/fycth/webrtcexample/blob/master/www/js/rtc_lib.js

你可以在那里看到我只使用STUN服务器,因此要么是点对点,要么什么都没有,没有中继。


1
是的,您可以只传递STUN服务器(而不是TURN)到RTCPeerConnection。在这种情况下,它将尝试使用点对点连接而无需中继。 - fycth
1
仅设置TURN服务器并不一定意味着会使用TURN并中继媒体,因为大多数TURN服务器实现也会向应用程序提供STUN候选项。要强制应用程序使用中继,您需要过滤SDP中的候选项列表,并仅保留中继候选项。 - nakib
我想要相反的。点对点或者什么都不要。 - K..
2
我们能在 chrome://webrtc-internals/ 中找到 STUN 或 TURN 吗? - Robert
3
如果您检查 SDP,就会看到对等方可以在提议中处理的候选项列表。其中包括主机、srflx(STUN)或中继(TURN)。请检查您的同行正在使用哪一个! - igracia
显示剩余4条评论

4

在Chrome中,转到chrome://webrtc-internals,找到“succeeded connection-googCandidate pair”(黑字),检查googLocalcandidatetype是否为中继(relay),则WebRTC使用的是中继连接。如果googLocalcandidatetype为本地(local), 则使用点对点连接。 在Firefox中,转到about:webrtc,如果成功的连接包含任何一个中继-udp候选项,则WebRTC使用中继连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接