是否有可能在提供需要凭据的不同TURN服务器的对等方之间成功协商WebRTC连接



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

如果这些对等体位于不同的区域,则它们将提出不同的TURN服务器。根据该问题的公认答案:用于RTCConfiguration的TURN服务器,各个TURN服务器将彼此连接以中继来自对等体1<gt;TURN1<gt;TURN2<gt;Peer2.然而,我一直没能让它发挥作用。在客户端中强制TURN(即没有直接的p2p连接(,并试图使用TURN服务器(例如美国到巴西(建立对等连接,协商总是失败。

这是因为服务器需要在ICE候选人中未通过的凭据吗?或者这可能是西斯的一个特殊问题?或者它真的应该正常工作,而我们做错了什么?

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

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

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

通常,WebRTC应用程序使用单一的TURN服务器。如果您想使用两个,这意味着可以控制SDP的分配生成和消息传递。

相关内容

最新更新