webrtc - ICE 候选人仅从一个网络接口收集
问题描述
得到非常简单的代码:
<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 服务器,所以我只希望本地主机候选者,但来自所有接口)。ICE只检查一个以太网接口。
为什么 ?
解决方案
除非您拥有 getUserMedia 的权限,否则 Chrome 会将 ICE 候选者限制在默认路由的接口上。本草案解释了理由
推荐阅读
- vb.net - 将新行 VB.net ADODB 添加到 ADO.NEt 后从数据表更新数据库时出错
- javascript - 我应该如何处理这个函数的时间
- python - 带有自定义颜色条的 Python 轮廓函数
- sonarqube - 使用 sonar-project.properties 文件禁用或调整阈值
- python - 如何在for循环中将值存储到变量中
- java - 如何防止 SQLiteOpenHelper 上的应用程序崩溃 onUpgrade 失败
- python - 自定义 Locust 输入参数
- java - 用于切换不同连接的 Jboss wildfly 21/Jboss EAP 7.3 配置
- php - PHP 警告:jwt 的非法字符串偏移
- python-3.x - 熊猫拆分所有列表列并获得第一个值