问题:
在Chrome中,当WebRTC组件被踢到无效状态时,如何重置它们的状态 - 而不重新加载页面?请参阅下面有关我如何复制此状态以及为什么我会问这个问题的更多详细信息:
问题描述:
在进行呼叫时,我在Chrome 35 / node-webkit 0.10.0中设置Ice Candidates时遇到以下错误:
Failed to execute 'addIceCandidate' on 'RTCPeerConnection': The ICE candidate could not be added.
现在,我知道为什么会发生这种情况。 我正在开发一个健壮的WebRTC应用程序,可以处理一些正常用户滥用。 为了复制此状态,我基本上必须进行几次WebRTC呼叫,然后快速杀死它们,然后立即尝试另一个呼叫。 我猜这一定会将PeerConnection和其他组件踢入期望发生B的不同状态,但我再次从A开始。 这由以下错误消息表明:
Failed to set session description: Failed to set remote answer sdp: Called in wrong state: STATE_INIT
现在,我们在互联网上看到的大多数WebRTC演示,例如http://apprtc.appspot.com,是无状态的,并且经常刷新浏览器,这会导致重置DOM状态。 因此,对于那些开发人员来说,答案很简单。 只需重新加载页面即可。
目前,当DOM进入此状态时,我必须重新加载应用程序。 但是,这不是一个可接受的解决方案,因为我正在构建一个单页应用程序,而不是一个网站,
我想知道是否有一种方法可以调用API来告诉它重置抛出这些错误的任何内容的状态?
一些故障排除步骤:
我尝试了以下JavaScript控制台中的操作,以在node-webkit(Chrome 35)中手动重置PeerConnection的状态,但没有帮助:
var properties = {};
properties.pcConfig = {
"iceServers": [{
"url": "stun:stun.l.google.com:19302"
}]
};
properties.pcConstraints = {
"optional": []
};
peerConn = new RTCPeerConnection(properties.pcConfig, properties.pcConstraints);
peerConn.close();
以下是一些peerConnection属性的输出:
peerConn.signalingState --> "closed"
peerConn.iceConnectionState --> "closed"
peerConn.iceGatheringState --> "complete"