首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simple-peer WebRTC错误: Ice连接失败

Simple-peer WebRTC错误: Ice连接失败
EN

Stack Overflow用户
提问于 2017-11-03 07:48:40
回答 2查看 6.5K关注 0票数 2

我无法使Simple-Peer NPM库在浏览器中连接两个不同网络中的两台计算机。如果这两台计算机在同一个本地网络中,浏览器会互相连接,否则,我就不能让它们连接。

两个浏览器都返回此错误:

代码语言:javascript
复制
"Error: Ice connection failed. 
at Peer._onIceStateChange"
at RTCPeerConnection.Peer.self._pc.oniceconnectionstatechange

信号看起来很适合我:

代码语言:javascript
复制
{ 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' } }

但是当库想要建立连接时,两个浏览器都会返回上述错误。

这是我的代码

代码语言:javascript
复制
//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: "pasaseh@ether123.net",
                credential: "12345678"
            },
            {
                urls: "turn:numb.viagenie.ca",
                username: "pasaseh@ether123.net",
                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

有没有解决这个问题的办法?谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-11-03 14:56:18

来自chrome://webrtc-internals的屏幕截图显示,尽管您使用了TURN服务器凭据,但没有收集到类型为中继的icecandidate。详情请参见this blog post

您可以使用this page检查凭据

票数 0
EN

Stack Overflow用户

发布于 2021-12-18 18:32:30

我建议在列出您的ice服务器时使用仍在运行的ice服务器,如下所示

代码语言:javascript
复制
new SimplePeer({
          initiator: false,
          tricle: false,
          config: {
            iceServers: [
              {
                urls: "turn:numb.viagenie.ca",
                credential: "muazkh",
                username: "webrtc@live.com",
              },
            ],
          },
        })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47086373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档