我实际上遵循了此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失败”,或者
“跨域请求被阻止:同一起源策略不允许读取https://computeengineondemand.appspot.com/turn?username=41784574&key=4080218913处的远程资源。 (原因:CORS标头“ Access-Control-Allow-Origin”缺失)。”

根据后一个,我已经启用
“ A2enmod标头”,并将其设置为apache.conf。“标头始终设置Access-Control-Allow-Origin“ *”“

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

最佳答案

STUN应该在80%的时间内工作,这意味着对于80%的Internet最终用户来说,STUN应该在某些(大多数)时间上工作。是否使用此80%取决于网络配置,尤其是是否允许UDP。

您可以使用Wiresharktcpdump之类的工具自己检查STUN交通。

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

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

10-07 21:11