我已经使用 WebRTC 数据通道的 PeerJS 实现设置了一个文本聊天服务。PeerJS 为此目的提供了一个基本的信号服务器,但我试图用通过 XirSys 设置的 STUN 和 TURN 服务器(由另一个 WebRTC 库 SimpleWebRTC 推荐)来替换它。我还没有部署到网络上。
使用 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}
]
}
});
注意:我的身份、秘密、域等显然在这里没有准确表示。我不认为那是我的问题所在。
有什么想法吗?