WebRTC:我需要TURN服务器吗? (对您有帮助吗?)

时间:2019-08-18 18:38:22

标签: webrtc turn mediasoup

我有一个使用WebRTC和mediasoup服务器的网络摄像头聊天室应用程序(因此是多对多视频共享)。

我遇到了一些用户无法使用传入视频供稿的问题。这是一个棘手的问题,因为我根本无法重现它,并且由于大多数用户都是非技术人员,因此我无法轻松地“远程调试”该问题。到目前为止,我唯一可以确定的是它似乎与网络有关,而不与浏览器有关,因为我收到了使用Firefox,Chrome,Safari和Edge的人的错误报告。我在端口443上运行我的服务器(mediasoup v2),而服务器盒上没有防火墙,因此这应该使门尽可能宽。我只是不知道确切的问题是什么,所以我在黑暗中感觉到了。

因此,我正在尝试解决方案。我不认为(?)我已经设置了TURN服务器,但是从我阅读的内容来看,添加一个服务器肯定不会造成伤害,并且可以帮助我解决这种情况。

我不完全了解整个WebRTC协议或RFC 7118(这确实很复杂!),也不完全了解TURN服务器适合什么/在何处/如何适应。这会有所帮助,对吧?很多Google搜索都没有给出明确的答案。希望有帮助!谢谢!

2 个答案:

答案 0 :(得分:1)

WebRTC会尝试建立p2p连接的所有方法,但有时会失败。轮流服务器充当最后的手段,以便对等双方都可以通过轮流服务器进行连接。显然,这不是p2p连接,因此会产生额外的延迟,并且您必须确保转弯服务器具有足够的带宽来覆盖您期望的所有连接。

TL; DR,如果需要100%的连接速率,则应该有一个转弯服务器。

我相信AWS有一个现成的实例,您可以启动,或者如果您可以使用此开放源代码Coturn服务器https://github.com/coturn/coturn

在调试说明上...检查您的制冰候选类型。如果您只有STUN服务器,则应该看到host和srflx,但是如果您有TURN服务器,则还将看到中继。您可以通过丢弃具有host和srflx类型的ice候选对象来复制此问题。

答案 1 :(得分:1)

  

我的服务器(mediasoup v2)在端口443上运行,而服务器盒上没有防火墙,因此应该使门尽可能宽

那是websocket。媒体流量通常通过UDP运行,mediasoup使用随机端口。在某些情况下,在udp端口443 上配置的TURN服务器可能会有所帮助。 另一个问题是UDP被阻止,可以使用本地防火墙轻松重现。.Mediasoup支持一种称为ice-tcp的东西,它将允许媒体通过TCP连接运行。您应该检查您的mediasoup安装是否使用ice-tcp。如果没有,则具有TURN / TCP的TURN服务器将有所帮助。