2 台不同的计算机,2 台 Chrome,2 个不同的网络。
我正在上述 2 个对等方之间进行 WebRTC 调用,并使用getStats()检查连接。问题是,在一个 Chrome 中,它在“connection”属性中显示“ turn ”,而在另一个 Chrome 中,它显示“ stun ”。
那可能吗?我以为你要么通过一个或另一个连接?
2 台不同的计算机,2 台 Chrome,2 个不同的网络。
我正在上述 2 个对等方之间进行 WebRTC 调用,并使用getStats()检查连接。问题是,在一个 Chrome 中,它在“connection”属性中显示“ turn ”,而在另一个 Chrome 中,它显示“ stun ”。
那可能吗?我以为你要么通过一个或另一个连接?
对的,这是可能的。
第一个浏览器将使用其 TURN 服务器检索到的 ICE Candidate。第二个浏览器将使用 STUN 检索到的 ICE Candidate(例如公共 IP 地址)。
事实上,TURN 服务器不必将 WebRTC 流中继到远程 TURN 服务器。如果对等方能够在不使用其 TURN 的情况下联系远程 TURN 服务器,则将仅使用一个中继服务器进行通信。
"iceTransports": "relay"
但是,您可以在 webapp 的配置中使用以下选项RTCPeerConnection
来强制两个浏览器都使用 TURN 服务器。
通常在两端选择中继候选人是罕见的情况,对于中继情况,大多数情况下您最终会在一端选择中继候选人,而在另一端选择服务器自反/对等自反候选人,尽管服务器自反/对等自反候选选择端将自己标识为 STUN 或对等候选,但它实际上是中继连接,最好检测您的原始连接类型是检查两端的候选类型。