javascript - webrtc onicecandidate 事件触发器
问题描述
我想知道为什么 webrtc 有这种行为:在创建对等连接之后,我声明了 onicecandidate 事件处理程序,它将 conosle 记录连接的本地描述。然后我创建一个报价并将返回的 sdp 设置为连接的本地描述。事件处理程序被触发,但是本地描述永远不会被控制台记录。但是,每当我在创建商品之前创建数据通道时,控制台都会返回本地描述。有人可以向我解释为什么会这样吗?
没有数据通道的例子
const lc = new RTCPeerConnection();
lc.onicecandidate = e => console.log(JSON.stringify(lc.localDescription));
lc.createOffer().then(o=>lc.setLocalDescription(o)).then(console.log('offer set'))
控制台返回:Promise {}
数据通道示例
const lc = new RTCPeerConnection();
lc.onicecandidate = e => console.log(JSON.stringify(lc.localDescription));
lc.createDataChannel("xan")
lc.createOffer().then(o=>lc.setLocalDescription(o)).then(console.log('offer set'))
控制台返回:Promise {},localDescription
解决方案
一个可能的答案可能是在第一种情况下没有连接到连接的 MediaStreamTracks
推荐阅读
- javascript - 在 node.js (express.js) 后端项目中使用 js 装饰器是个好主意吗?
- angular - Nativescript 中有类似“Hydration”的东西吗?
- selenium - 如何在 docker-compose.yml 中配置 Selenium Grid(最大会话)
- python - 在 Python 中使用可变长度参数时如何接受用户的参数?
- python - 使用 Pandas 进行批量简单计算的 Python GPU 编程
- php - 获取每个交互并将其存储到数据库 twilio 代理中
- apache-kafka - 如何启动融合平台?
- javascript - JavaScript中数组的滑动窗口
- android - 如何修复“任务执行失败:app-guest:transformClassesWithJarMergingForProductionRelease”。
- javascript - 如何使用 Enzyme 浅包装器对作为道具传递给子组件的 React 函数进行单元测试