【问题标题】:ICE candidates gathered only from one network interfaceICE 候选人仅从一个网络接口收集
【发布时间】:2018-10-05 11:08:15
【问题描述】:

得到了非常简单的代码:

<script type="text/javascript">
    pc = new window.RTCPeerConnection();

    pc.onicecandidate = function(event) {
        console.log("onicecandidate\n", event);
    }

    pc.onicegatheringstatechange = function(event) {
        console.log("onicegatheringstatechange\n", event);
    }

    dc = pc.createDataChannel("dataChannel");

    errFunc = function(err) {
        console.log("errFunc\n", err);
    }

    successCback = function() {
        console.log("setLocalDescription is a success\n");
    }

    pc.createOffer()
        .then(function(offer) { pc.setLocalDescription(offer)})
        .then(successCback)
        .catch(errFunc);

</script>

让 ubuntu 运行 chromium 和 两个 本地以太网接口。 运行上述代码只会产生 1 调用 onicecandidate 和 1 调用 onicegatheringstatechange。 (故意没有指定任何 STUN/TURN 服务器,所以我只希望本地主机候选者,但来自 all 接口)。 ICE 只检查一个以太网接口。

为什么?

【问题讨论】:

    标签: webrtc ice


    【解决方案1】:

    除非你有 getUserMedia 的权限,否则 Chrome 会将 ICE 候选者限制在默认路由的接口上。理由解释in this draft

    【讨论】:

    • 非常感谢,@Philipp。看来这是一个案例。但是我在这里有点迷路 - 我愿意创建一个仅限 DataChannel 的对等连接(因此我不需要 getUserMedia 请求)并且有来自所有网络接口的候选人。有没有可行的方法来做到这一点?
    • @psb 简短的回答是,未来可能会变得更糟。加入我们的努力 herehere 以实现专用权限请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多