WebRTC의 데이터 채널 PeerJS 구현을 사용하여 문자 채팅 서비스를 설정했습니다. PeerJS는 이러한 목적을위한 기본 신호 서버를 제공하지만, XunSys (다른 WebRTC 라이브러리 인 SimpleWebRTC에서 권장)를 통해 설정된 STUN 및 TURN 서버로 대체하려고했습니다. 아직 웹에 배포하지 않았습니다.WebRTC TURN 서버 - 설정했지만 작동하지 않습니다.
노드를 사용하여 정적으로 로컬 파일을 제공하면 로컬 네트워크에서 작동합니다 (사용자가 옆에 앉아서 브라우저에서 내 IP/포트를 탐색 할 때). 그러나 다른 노드를 통해 연결할 때 작동하지 않습니다. 같은 네트워크상의 (즉, 직장의 반대편에있는) 액세스 포인트.
내가 가설을 세우는 것은 방화벽을 때리는 것이지만, 설정하려고 시도한 XirSys STUN 및 TURN 서버로 되돌아 가지 않고 트래픽을 PeerJS의 시그널링 서버로 보내는 것이다. 다음은 내가 작업하고있는 코드입니다.
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}
]
}
});
참고 : 내 ident, secret, domain 등은 분명히 여기에 정확하게 표시되지 않습니다. 나는 그것이 내 문제가있는 곳이라고 생각하지 않는다.
의견이 있으십니까?
당신이 점점 ICE 후보? 신임장이 정확합니까? –
설정이 맞다면 대부분 그렇습니다. 방화벽을 싫어하는 것입니다. 동일한 네트워크에서 로컬 ICE 지원자를 해결하고 트래픽을 처리 할 수 있지만 회사의 네트워크에서 UDP/TURN/STUN과 관련된 방화벽 규칙은 –
으로 설정해야합니다. 'config'개체를 키/디버그 등? 생성자는'new Peer()'에 대해 두 개의 인수 만 취합니다. –