2014-07-10 4 views
2

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 등은 분명히 여기에 정확하게 표시되지 않습니다. 나는 그것이 내 문제가있는 곳이라고 생각하지 않는다.

의견이 있으십니까?

+0

당신이 점점 ICE 후보? 신임장이 정확합니까? –

+0

설정이 맞다면 대부분 그렇습니다. 방화벽을 싫어하는 것입니다. 동일한 네트워크에서 로컬 ICE 지원자를 해결하고 트래픽을 처리 할 수 ​​있지만 회사의 네트워크에서 UDP/TURN/STUN과 관련된 방화벽 규칙은 –

+0

으로 설정해야합니다. 'config'개체를 키/디버그 등? 생성자는'new Peer()'에 대해 두 개의 인수 만 취합니다. –

답변

1

STUN/TURN 트래픽의 wireshark 캡처를 이메일로 보내면 문제가 어디에서 발생했는지 요약 할 수 있습니다. 신호를 통해 전송 된 메시지는 별도이지만 WebRTC 메시지와 병렬입니다. 따라서 응용 프로그램이 작동하지만 신호가 신호를 통해 전송되는 경우 응용 프로그램의 구성이 올바르지 않을 수 있습니다.

XirSys는 포트 80/443을 통해 TCP를 통한 UDP를 통해 TURN을 제공하므로 신호가 연결되어 있고 흐르는 경우 TURN도 마찬가지입니다.

코드를 살펴보면 getIceServers 성공 처리기의 Data.d를 PeerJS 구성으로 전달하면 코드가 상당히 줄어들 수 있습니다 .- 재구성하려는 ICE 문자열은 세분화되어있다.

감사합니다, 리 XirSys CTO 당신의 ICE 서버에서

+0

답변 해 주셔서 감사합니다 (그리고 분명히 그 목적으로 계정을 만들었습니다), Lee! 연락을 취할 때 어떤 이메일 주소를 사용해야합니까? 나는 다음 몇 일 이내에 wireshark 캡처를 시도하고 그것을 넘겨 보냅니다. 나는 정직하게 - 나는 단지 몇 달 동안 코딩을 했으므로, 나는 틀린 무언가를 잘못 구성했을 가능성이 큽니다. 그래도 내가 얻을 수있는 도움을 주시면 감사하겠습니다. – Smorty

+0

걱정할 필요가 없습니다. 당신은 우리 여기에 도달 할 수 있습니다 : [email protected] [= – onichase

관련 문제