1

我实际上已经遵循了这个 WebRTC 代码实验室(https://codelabs.developers.google.com/codelabs/webrtc-web/#7),但是在需要连接到 ICE 服务器时卡住了。

这里的基本代码:

main.js

var pcConfig = {
  'iceServers': [{
    'url': 'stun:stun.l.google.com:19302'
}

[...]

if (location.hostname !== 'localhost') {
 requestTurn(
   'https://computeengineondemand.appspot.com/turn?username=41784574&key=4080218913');}

通常我会收到错误消息:“ICE failed”或“Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://computeengineondemand.appspot.com/turn?username=41784574&key=4080218913。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。”</p>

根据后者,我启用了“A2enmod headers”并将其设置为 apache.conf “Header always set Access-Control-Allow-Origin "*" “</p>

问题仍然存在。我的 STUN 服务器是“'url': 'stun:stun.l.google.com:19302'” 据我了解,STUN 应该在 80% 的时间内工作。但这永远行不通。因此,即使 TURNserver 不再工作,它有时也应该与 STUN 连接?

4

1 回答 1

3

STUN 应该在 80% 的时间内工作意味着对于 80% 的 Internet 最终用户,STUN 应该在某些(大部分)时间里工作。您是否在这 80% 中取决于网络配置,尤其是是否允许 UDP。

您可以使用Wiresharktcpdump等工具自己检查 STUN 流量。

ICE 同时使用 STUN 和 TURN。如果 STUN 和 TURN 都不起作用,您将无法将 WebRTC 对等连接连接到您自己网络之外的端点。

您还需要将 TURN 服务器添加到您的iceServers.

于 2016-12-13T16:23:50.903 回答