首页 > 解决方案 > RTCPeerConnection 如何使用 STUN/TURN 服务器阵列?

问题描述

我们正在使用提供的 STUN/TURN 服务器列表对 Web RTC 的行为进行一些研究。我找不到任何文档,所以我正在做一些测试,但我希望有人能提供清楚的解释。

根据文档(https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer/urls),我们可以提供任意数量的服务器。

为了提供更多上下文,我们有一个使用 Google Stun 服务器(stun.l.google.com:19302)的工作 WebRTC 应用程序,但是我们正在我们自己的 STUN 服务器上迁移。我们有一个 API,它返回要使用的 STUN 服务器列表,但是根据行为我们可能会提供不同的列表。

谢谢你的帮助

标签: javascriptwebrtcstun

解决方案


但是 RTCPeerConnection 是如何选择要使用的服务器的呢?

RTCPeerConnection 不会选择服务器,它会选择一对 ICE 候选者。通过联系服务器生成 ICE 候选者。

它是否尝试第一个,如果失败,尝试第二个,直到一个工作?

它联系他们所有人(这个过程称为聚集)。建立连接后,您的 WebRTC 实现可能会停止收集。

是否应该所有服务器都启动并运行,或者连接是否能够跳过无法访问的服务器?

服务器宕机是可以的。如果所有这些都不起作用,Trickle ICE 允许继续进行连接检查。

如果第一台服务器能够结束协商,它是否仍然尝试与剩余的服务器进行协商?

两个 WebRTC 代理不通过 STUN 服务器进行通信,这个问题有一点细微差别。在 WebRTC for the Curious 的连接性章节中,查看 ICE 如何执行步骤。

它只是改变候选人名单吗?

是的!对于每个 STUN 服务器,您可能有另一个候选人。这取决于您的 NAT 的行为。您可能在只为您提供一个映射的 NAT 配置后面。不太可能但仍有可能!


推荐阅读