2017-11-02 1 views
1

브라우저에서 두 개의 서로 다른 네트워크에있는 두 컴퓨터를 연결하는 데 Simple-Peer NPM 라이브러리를 만들 수 없습니다. 컴퓨터가 동일한 로컬 네트워크에 있으면 브라우저가 서로 연결되지만 그렇지 않으면 연결할 수 없습니다. 바로 나를 위해단순 피어 WebRTC 오류 : 얼음 연결이 실패했습니다.

"Error: Ice connection failed. 
at Peer._onIceStateChange" 
at RTCPeerConnection.Peer.self._pc.oniceconnectionstatechange 

시그널링 보이는 :

두 브라우저는이 오류를 반환

{ type: 'offer', 
    sdp: 'v=0\r\no=- 2275520429720515716 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 49523 DTLS/SCTP 5000\r\nc=IN IP4 5.12.206.160\r\na=candidate:2020300070 1 udp 2113937151 192.168.2.8 49523 typ host generation 0 network-cost 50\r\na=candidate:842163049 1 udp 1677729535 5.12.206.160 49523 typ srflx raddr 192.168.2.8 rport 49523 generation 0 network-cost 50\r\na=ice-ufrag:Ph/x\r\na=ice-pwd:csnTbzHs+dxzakEKPY8LfvBg\r\na=fingerprint:sha-256 B9:C0:9D:91:46:1B:E8:5C:83:B1:11:A7:C5:D7:64:97:A6:63:D9:12:11:0F:9A:05:8F:46:83:BC:90:38:86:9E\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n' } } 

{ type: 'answer', 
    sdp: 'v=0\r\no=- 1356997482353729498 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE data\r\na=msid-semantic: WMS\r\nm=application 56005 DTLS/SCTP 5000\r\nc=IN IP4 86.126.104.54\r\nb=AS:30\r\na=candidate:2702239670 1 udp 2113937151 192.168.1.103 56003 typ host generation 0 network-cost 50\r\na=candidate:842163049 1 udp 1677729535 86.126.104.54 56005 typ srflx raddr 192.168.1.103 rport 56003 generation 0 network-cost 50\r\na=ice-ufrag:W6zA\r\na=ice-pwd:1NhU5D47rSz83ANxlY+Tz/XI\r\na=ice-options:trickle\r\na=fingerprint:sha-256 2C:0B:78:49:F5:F0:44:6C:86:DD:27:BC:B6:7D:77:B9:B1:07:F4:2F:37:F5:24:D9:A3:54:7D:B3:A0:3C:57:C0\r\na=setup:active\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n' } } 

하지만 라이브러리가 연결을 설정하고자 할 때, 두 브라우저는 앞에서 설명한 오류를 반환합니다.

이 내 코드

//TUTORIAL BASED ON 
// https://github.com/feross/simple-peer 

var initiator = (location.hash||'') === '#1'; 
console.log("inititator",location.hash , initiator); 

var Peer = require('simple-peer'); 

params = { 
    initiator: initiator, 
    trickle: false, 
    reconnectTimer: 100, 
    iceTransportPolicy: 'relay', 
    config: { 

     iceServers: [ 
      { 
       urls: "stun:numb.viagenie.ca", 
       username: "[email protected]", 
       credential: "12345678" 
      }, 
      { 
       urls: "turn:numb.viagenie.ca", 
       username: "[email protected]", 
       credential: "12345678" 
      } 
     ] 
    } 
}; 

if (typeof window === "undefined"){ 
    var wrtc = require('wrtc'); 
    params.wrtc= wrtc; 
} 

var p = new Peer(params); 

p.on('error', function (err) { console.log('error', err) }) 

p.on('signal', function (data) { 
    console.log('SIGNAL', JSON.stringify(data)); 
    document.querySelector('#outgoing').textContent = JSON.stringify(data) 
}); 

document.querySelector('form').addEventListener('submit', function (ev) { 
    ev.preventDefault(); 
    console.log("am apasat pe button"); 
    p.signal(JSON.parse(document.querySelector('#incoming').value)) 
}); 

let index = Math.floor(Math.random()*100); 

p.on('connect', function (data) { 

    console.log('CONNECT', data, p); 

    setInterval(function() { 
     if ((typeof p !== 'undefined')&& (p !== null)) { 
      console.log(p); 
      p.send('whatever' + index + " ___ " + Math.random()) 
     } 
    }, 500); 

    p.on("hello", function(data){ 
     alert(data); 
    }); 

    p.emit("hello",55); 

}) 

p.on('data', function (data) { 
    console.log('data: ' + data) 
}); 

module.exports = function(){ 
    console.log("Hello World Server"); 
}; 

webrtc-internals

이 문제에 대한 모든 솔루션? 감사합니다

답변

0

chrome : // webrtc-internals의 스크린 샷은 사용하는 TURN 서버 자격 증명에도 불구하고 릴레이 유형의 icecandidate가 수집되지 않음을 보여줍니다. 자세한 내용은 this blog post을 참조하십시오.

자격 증명을 확인할 수 있습니다. this page

+0

Philipp 감사 정보. 나는 WebRTC 나 Simple Peer 라이브러리의 전문가는 아니지만 TURN 서버를 제공했기 때문에 소스 코드에서이 문제를 어떻게 해결할 수 있습니까? – Alex

+0

SImple-Peer 라이브러리가 TURN 서버를 사용하여 피어를 연결하지 않았다고 확신합니다. 아마도 Simple Peer 라이브러리의 버그로 TURN 서버를 사용하여 연결하려고하지 않거나 코드에 버그가있는 것입니다. 일부 네트워크의 일부 컴퓨터는 연결되지만 다른 네트워크에서는 컴퓨터가 서로 연결되지 않습니다. http://webdollar.io – Alex

+0

TURN 서버는 사용자가 제공해야하는 것입니다. 그들은 돈을 요구하기 때문에 돈을 벌지 않아도됩니다. –

관련 문제