我读到 WebRTC 在因为防火墙的原因无法直接点对点通信时会使用中继服务器。
那有没有办法检查这个情况呢?
当你建立WebRTC连接时,你需要设置STUN和/或TURN让网页浏览器使用。如果你告诉网页浏览器这两个选项,网页浏览器将首先尝试使用STUN。然后,在不成功的情况下,它将尝试使用TURN。
'Relay服务器'是一个TURN服务器。
据我所知,没有标准的方法可以知道网页浏览器决定使用哪个选项:STUN还是TURN。
另一方面,如果你是TURN服务器的所有者,你可以看到Web客户端是否使用它,然后将此信息发送给客户端。
更新
这是我的代码:https://github.com/fycth/webrtcexample/blob/master/www/js/rtc_lib.js
你可以在那里看到我只使用STUN服务器,因此要么是点对点,要么什么都没有,没有中继。
在Chrome中,转到chrome://webrtc-internals,找到“succeeded connection-googCandidate pair”(黑字),检查googLocalcandidatetype是否为中继(relay),则WebRTC使用的是中继连接。如果googLocalcandidatetype为本地(local), 则使用点对点连接。 在Firefox中,转到about:webrtc,如果成功的连接包含任何一个中继-udp候选项,则WebRTC使用中继连接。