WebRTC TURN服务器-我设置了它,但它';它不工作了

WebRTC TURN服务器-我设置了它,但它';它不工作了,webrtc,peerjs,Webrtc,Peerjs,我已经使用WebRTC数据通道的PeerJS实现建立了一个文本聊天服务。PeerJS为此提供了一个基本的信令服务器,但我已经尝试用通过XirSys设置的STUN和TURN服务器(由另一个WebRTC库SimpleWebRTC推荐)来代替它。我还没有部署到web上 使用Node在本地为我的静态文件提供服务时,它将在本地网络上工作(当我坐在此人旁边,他们在浏览器中导航到我的ip/端口时),但在通过同一网络上的不同接入点连接时(即在工作时,在大楼的另一端),它将不工作 我的假设是,它撞上了防火墙,但仍

我已经使用WebRTC数据通道的PeerJS实现建立了一个文本聊天服务。PeerJS为此提供了一个基本的信令服务器,但我已经尝试用通过XirSys设置的STUN和TURN服务器(由另一个WebRTC库SimpleWebRTC推荐)来代替它。我还没有部署到web上

使用Node在本地为我的静态文件提供服务时,它将在本地网络上工作(当我坐在此人旁边,他们在浏览器中导航到我的ip/端口时),但在通过同一网络上的不同接入点连接时(即在工作时,在大楼的另一端),它将不工作

我的假设是,它撞上了防火墙,但仍然将流量定向到PeerJS的信令服务器,而不会退回到我尝试设置的XirSys Stunk和TURN服务器。以下是我正在使用的代码:

var stun = {};
var turn1 = {};
var turn2 = {}; 
  $.ajax({
    type: "POST",
    dataType: "json",
    url: "https://api.xirsys.com/getIceServers",
    data: {
        ident: "myusername",
        secret: "long-alphanumeric-secret-key",
        domain: "www.adomain.com",
        application: "anapp",
        room: "aroom",
        secure: 1
    },
    success: function (data, status) {
        console.log(data);
        stun = data.d.iceServers[0];
        turn1 = data.d.iceServers[1];
        turn2 = data.d.iceServers[2];
    },
    async: false
});

var conn;
  // Connect to PeerJS, have server assign an ID instead of providing one
  var peerID = prompt('What would you like your screen name to be?');
  var peer = new Peer(
    peerID, 
    {key: 'mypeerjsserverkey', debug: true}, 
    {
    config: {'iceServers': [
        {url: stun.url},
        {url: turn1.url, credential: turn1.credential, username: turn1.username},
        {url: turn2.url, credential: turn2.credential, username: turn2.username}
      ]
    }
  });
注意:我的身份、秘密、域等在这里显然不准确。我想这不是我的问题所在


有什么想法吗?

如果您通过电子邮件向我们发送您晕眩/转弯流量的wireshark捕获,我们应该能够概述您的问题所在。通过信令发送的消息是独立的,但与WebRTC消息平行。因此,如果应用程序正在工作,但消息是通过信令发送的,则应用程序的配置可能不正确

XirSys通过端口80/443通过UDP over TCP提供TURN,因此,如果信令正在连接和流动,TURN也应该如此

另外,看看您的代码,如果您将data.d从getIceServers成功处理程序传递到PeerJS配置,那么您的代码应该会减少很多:-)您正在重建的ICE字符串不需要分解

问候,, 李
XirSys CTO

您是否从您的ICE服务器获得ICE候选人?你确定你的凭据是正确的吗?如果你的设置是正确的,那么大多数情况下是正确的,你正在使用防火墙。在同一网络上,本地ICE候选对象可以解决,流量也可以通过,但要在公司网络防火墙规则中的任何地方都设置UDP/TURN/STUN,是否应将“config”对象与key/debug等放在同一对象中?构造函数只接受
new Peer()
的两个参数感谢您的回答(显然是为此创建了一个帐户),Lee!我应该用什么电子邮件地址联系你?我会试着在接下来的几天内抓到一条线鲨并将其发送过来。老实说,我只编写了几个月的代码,所以我很可能配置不正确。不过,我当然很感激能得到的任何帮助。不用担心。您可以在此处联系我们:experts@xirsys.com [=