为什么从某些网站发送STUN请求失败?

时间:2020-11-11 19:22:25

标签: javascript google-chrome webrtc

(async function()
{
    var iceServers = [{ urls: ["stun:stun.l.google.com:19302"] }];
    
    var peer = new RTCPeerConnection({ iceServers });
    peer.channel = peer.createDataChannel("channel");
    
    peer.onicecandidate = function(e)
    {
        if(e.candidate)
            console.log(JSON.stringify(e.candidate, null, '\t'));
        else
            console.log("DONE");
    };
    
    peer.onicecandidateerror = (e) => console.error(e);
    
    var offer = await peer.createOffer();
    await peer.setLocalDescription(offer);
})();

我使用此示例代码来测试连接到STUN服务器并列出生成的ICE候选对象。如果我将其粘贴到控制台中,则根据我当前正在访问的网站,将触发icecandidateerror事件。 IPV6地址充满x并且看起来无效。它在Chrome中发生,但在Firefox中不发生。这是我收到的错误:

RTCPeerConnectionIceErrorEvent
address: "[0:0:0:x:x:x:x:x]"
bubbles: false
cancelBubble: false
cancelable: false
composed: false
currentTarget: RTCPeerConnection {…}
defaultPrevented: false
errorCode: 701
errorText: "STUN host lookup received error."
eventPhase: 0
hostCandidate: "[0:0:0:x:x:x:x:x]:33860"
isTrusted: true
path: []
port: 33860
returnValue: true
srcElement: RTCPeerConnection {…}
target: RTCPeerConnection {…}
timeStamp: 2621.4149999996152
type: "icecandidateerror"
url: "stun:stun.l.google.com:19302"

以下是我在以下网站上尝试过此代码的网站的列表:

会导致此错误的某些域名是什么?可能是Chrome错误吗?

1 个答案:

答案 0 :(得分:1)

您可能已获得标记为“良好”的网站来源的摄像机访问权限。那会改变行为。

强制性免责声明:webrtc并非用于收集IP地址。