0

我们使用全球 TURN 服务器 (Xirsys) 提供商。当在对等点之间建立连接时,每个对等点首先确定离它们的位置最近的 TURN 服务器,然后获取该服务器的凭据。然后,对等点交换 ICE 候选者,包括它们各自的 TURN 服务器 URL。

如果这些对等点位于不同的区域,他们将提出不同的 TURN 服务器。根据这个问题的公认答案:TURN-Server for RTCConfiguration各个 TURN 服务器将相互连接以中继来自 Peer1 <> TURN1 <> TURN2 <> Peer2 的流。但是,我一直无法让它工作。在客户端中强制 TURN(即没有直接的 p2p 连接),并尝试使用例如美国的 TURN 服务器与巴西的服务器建立 peerConnection,协商总是失败。

这是因为服务器需要没有在 ICE 候选人中传递的凭据吗?或者可能是 Xirsys 特有的问题?还是它实际上应该工作正常而我们做错了什么?

4

2 回答 2

3

不,这不会是因为凭据。它们在客户端和它的 TURN 服务器之间使用。TURN 服务器和远程端点之间的连接不使用任何身份验证。

事实上,每个 TURN 服务器都应该幸福地不知道远程方甚至是另一个 TURN 服务器。就他们而言,无论是浏览器、另一个 TURN 服务器还是其他应用程序,他们都将数据包转发到远程端点。

于 2020-09-10T13:16:04.970 回答
1

因此,虽然通过两个 TURN 服务器工作是可能的,但绝对不容易。原因是第一个 TURN 服务器将生成具有给定端口的分配。第二个 TURN 服务器将需要向该端口发送数据。但是,第一个 TURN 服务器如何知道将数据发送到哪里?第二台TURN服务器还没有分配!

通常,WebRTC 应用程序使用单个 TURN 服务器。如果要使用两个,则意味着控制 SDP 的分配生成和按摩。

于 2020-09-11T08:03:31.790 回答