我使用WebRTC数据通道的PeerJS实现设置了文本聊天服务。 PeerJS为此提供了一个基本的信令服务器,但我试图用通过XirSys设置的STUN和TURN服务器(由SimpleWebRTC推荐,另一个WebRTC库)替换它。我还没有部署到网上。
使用Node在本地提供我的静态文件,它可以在本地网络上工作(当我坐在人的旁边,他们导航到浏览器中的我的IP /端口),但在通过不同的访问连接时不起作用点在同一个网络上(即在工作中,在建筑物的两端)。
我的假设是,它正在攻击防火墙,但仍然将流量引导到PeerJS的信令服务器,而不会回到我试图设置的XirSys STUN和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}
]
}
});
注意:我的身份,秘密,域名等显然未在此处准确表示。我认为这不是我的问题所在。
有什么想法吗?
答案 0 :(得分:1)
如果您通过电子邮件向我们发送STUN / TURN流量的wirehark捕获信息,我们应该能够概述您的问题所在。通过信令发送的消息是独立的,但与WebRTC消息并行。因此,如果应用程序正在运行,但邮件是通过信令发送的,那么应用程序的配置可能无法正确。
XirSys通过端口80/443通过UDP提供TURN,所以如果信令连接和流动,TURN也是如此。
另外,看一下你的代码,如果你将data.d从你的getIceServers成功处理程序传递给PeerJS配置,这应该会减少你的代码:-)你重建的ICE字符串不会#n;'需要分解。
此致 背风处 XirSys首席技术官