问题标签 [rtcpeerconnection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何销毁 RTCPeerConnection?
我可以使用以下代码创建一个新的对等连接对象:
发生这种情况时,chrome 将其显示为新的连接对象chrome://webrtc-internals/
我想稍后销毁这个对象。怎么做?我试过了
但这似乎没有任何作用,因为peer
变量仍然是 RTCPeerConnection 类型,我仍然可以看到它在chrome://webrtc-internals/
.
如果我取消设置变量,比如
它仍然显示在chrome://webrtc-internals/
. 但是,如果我关闭网页,它会立即从chrome://webrtc-internals/
.
释放 RTCPeerConnection 对象的正确方法是什么?我问是因为如果我不释放它们,我偶尔会被网络浏览器拒绝创建新的 RTCPeerConnection,因为它们中有太多正在使用中。
javascript - 如何在 JavaScript 中正确销毁 RTCPeerConnection?
当我创建一个new RTCPeerConnection()
时,我无法用 peer.close() 销毁它,据我所知,一段时间后我的资源用完了。当网页创建大量RTCPeerConnection
s 时,大约 600 次尝试后停止工作,并在 Chrome 中抛出以下错误:
未捕获的 DOMException:无法构造“RTCPeerConnection”:无法创建这么多 PeerConnections
这是一个测试脚本,它将帮助您解决错误。这只是说明性的,即使对等点的创建速度要慢得多,也会出现问题:
我希望它在调用 peer.close() 时释放所有资源,或者至少在 peer 设置为 null 时释放所有资源,所以我看不出浏览器为什么会抛出有这么多 PeerConnections 的错误。我做错了什么吗?如何正确销毁对等体?谢谢
angular - 找不到名称“RTCSignalingState”
连接 RTCPeerConnection 时出现编译时错误。
我已经安装了 npm install --save-dev @types/webrtc 我需要安装什么新东西吗?
javascript - 重新协商的 WebRTC 问题(在 addTrack、removeTrack 之后)
我有一个应用程序,每次通话都以音频开头,但用户有机会切换视频聊天(有一个按钮)。
这是问题,在第一次切换后一切正常,但在切换到音频并再次切换到视频远程流后,不使用Firefox
它的用户不会出现这意味着Firefox's
对等连接在添加localstream
. 看起来FireFox
removeTrack()
功能在其他浏览器中的工作方式不同,在FireFox
删除的发件人中保留在 peerconnection 对象中,但在其他浏览器中没有。
当任何用户不使用时,Firefox
不会出现此问题。
下面是项目的链接(这是angular
框架架构)和附加描述。
项目
ps:' app/src/app/app.components.ts '中的主要逻辑
我的问题
它可能是什么原因以及如何解决它?
如果您有这方面的经验,请提供您的一些建议和意见。这将非常有用,任何帮助将不胜感激!
非常感谢提前
javascript - 如何在 Chrome 中为 WebRTC 调用者设置远程描述而不会出错?
我希望逻辑没有缺陷。
第 1 步:来电者创建报价
第 2 步:调用者设置 localDescription
第三步:调用者将描述发送给被调用者
//------------------------------------------------ ------//
第四步:被调用者接收offer sets remote description
第 5 步:被调用者创建答案
第六步:被叫设置本地描述
第 7 步:被调用者将描述发送给调用者
//------------------------------------------------ ------//
第 8 步:呼叫者收到应答并设置远程描述
这是上面的代码
现在此代码在执行第 8 步时抛出错误
DOMException:无法在“RTCPeerConnection”上执行“setRemoteDescription”:无法设置远程报价 sdp:在错误状态下调用:kHaveLocalOffer
DOMException:无法在“RTCPeerConnection”上执行“addIceCandidate”:处理 ICE 候选者时出错
尝试调试但未发现逻辑或代码中的任何缺陷。注意到该pc
对象具有的一件奇怪的事情,localDescription
并且currentLocalDescription
我认为创建答案的被调用者必须同时具有描述类型 to beanswer
而是显示localDescription
to beoffer
和currentLocalDescription
type is answer
。
提前致谢。
javascript - 连接多个远程对等点后如何关闭媒体流?
我正在创建多个 webrtc 对等连接并使用创建单个媒体流
一切正常,直到最后一个对等连接关闭并且我想关闭媒体流。
如果只使用了 1 个对等连接,那么一切都会按计划关闭。如果超过 1 个对等连接使用了 MediaStream,则 MediaStream 变为 null ,但浏览器上的摄像头指示灯和摄像头灯都保持亮起。
我错过了什么?
webrtc - 在 localhost 127.0.0.1 上连接的对等方之间的 WebRTC 连接
我这里的用例略有不同。我想在同一主机上运行的两个对等方之间建立 webrtc 连接。我的硬件没有连接(没有 WiFi、以太网),我只有一个接口(127.0.0.1)。我正在使用两个对等进程之间的直接函数调用来发送信号。
从 peer1 我可以生成一个报价并将其发送给 peer2。peer2 能够设置远程 SDP,并且我得到了 SetSessionDescriptionObserver::OnSuccess() 回调,但 WebRTC 没有在任何对等方上生成任何 ICE 候选。我查看了配置,但找不到与我的用例匹配的任何内容。
这是一个有效的用例,它应该工作吗?
一个观察结果是,如果我将我的硬件连接到 WiFi(有/无互联网接入),一切正常。
webrtc - WebRTC 信道可靠性
我想检查一下我对 WebRTC 数据通道的理解是否正确,特别是可以通过改变字典的ordered
&maxRetransmits
或maxPacketLifeTime
属性来实现的不同类型的通道。RTCDataChannelInit
我的以下假设是否正确:
- 创建一个可靠且有序的通道,如 TCP,但基于消息而不是流:
- 创建一个可靠但无序的通道(应该
maxRetransmits
或maxPacketLifeTime
也应该指定以实现可靠性?)
- 创建一个不可靠且无序的通道,例如 UDP
- 创建一个不可靠但“有序”的通道,即如果在较晚的消息之后到达,较早的消息将被丢弃
google-chrome - 铬 72.0.3626.81 和 RTCPeerConnection.setLocalDescription
对于 chrome 之前的版本 71.0.3578.98 和 firefox 64.0.2 或 65.0,相同的代码可以正常工作。
它无法创建报价,因此永远不会更新 localDescription。
根本原因的任何线索或如何找到解决方案?
使用 chrome://webrtc-internals/ 进行调试我可以看到一个 setLocalDescriptionOnFailure ,现在我需要知道为什么以及如何修复它。
这是代码: