node.js - 设置Nodejs WebRTC视频通话,并且Turn/ICE失败,CORS被阻止

标签 node.js webrtc stun rfc5766turnserver

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

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

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

最佳答案

STUN 应该在 80% 的时间里工作意味着对于 80% 的互联网最终用户来说,STUN 应该在一些(大部分)时间里工作。是否处于这 80% 取决于网络配置,最值得注意的是是否允许 UDP。

您可以使用 Wireshark 等工具自行检查 STUN 流量,或tcpdump

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

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

关于node.js - 设置Nodejs WebRTC视频通话,并且Turn/ICE失败,CORS被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125250/

相关文章:

javascript - 如何偏移 Mongoose 排序查询以在特定文档之后开始

javascript - WebRTC 火狐 : Not enough arguments to RTCPeerConnection. setLocalDescription

java - 如何使用Stun和ice4j接收公共(public)IP和端口

node.js - 我应该如何处理同一主机上同一端口上的多个发布者?

node.js - 运行 `npm install` 时如何从 Node exec 获取输出?

javascript - Facebook 和 google 如何随机化 html 选择器 id 和类名?

javascript - 将音频和视频轨道组合到新的 MediaStream 中

java - 当我尝试结束通话(关闭连接)时,WebRTC 崩溃

google-chrome - 如何检查 TURN 服务器日志?

c - STUN 连接未完成