Javascript RTPEERCONNECTION connectionState从不从;新";至;核对/&引用;“已连接”;
我已经从某人手中接手了一个WebRTC项目,尽管我开始思考这个概念,但我仍然被一个特定的问题难住了:让WebRTC连接从Javascript RTPEERCONNECTION connectionState从不从;新";至;核对/&引用;“已连接”;,javascript,google-chrome,webrtc,Javascript,Google Chrome,Webrtc,我已经从某人手中接手了一个WebRTC项目,尽管我开始思考这个概念,但我仍然被一个特定的问题难住了:让WebRTC连接从新的移动到检查/完成,等等 以下是chrome://webrtc-internals: 我们的代码调用connect(): 依次调用connectrtpeerconnection(): connectrtpeerconnection( 这段代码永远不会执行: this.rtcPeer.oniceconnectionstatechange = () => { this
新的
移动到检查
/完成
,等等
以下是chrome://webrtc-internals
:
我们的代码调用connect()
:
依次调用connectrtpeerconnection()
:
connectrtpeerconnection(
这段代码永远不会执行:
this.rtcPeer.oniceconnectionstatechange = () => {
this.handleIceConnectionStateChangeEvent();
};
我遵循了每一条条件和代码路径,但目前没有看到问题可能是什么。是否有人遇到过这种情况,并且能够阐明一些需要考虑的潜在问题
谢谢!好吧,您永远不会调用setRemoteDescription或通过addIceCandidate添加远程ice候选。没有这些,就没有人可以与我交谈。当我在实施Kurento library for iOS时,尝试了以下方法: 生成SDPOffer 在我们这边设置LocalDescription WebRTC开始生成ICE候选 通过WebSocket发送Ice候选人 此时,另一方发送了SDPAnswer 在我们这端处理SDPAnswer 在我们这边设置RemoteDescription 服务器开始发送在其末端收集的候选服务器 在我们这边的数组中添加了这些候选项 此处接收到连接状态更改为“正在检查” 此时已收到RemoteStream 此处接收到连接状态更改为“已连接”
希望有帮助!谢谢你的回答!我没有包括那些代码片段,但我们有一个
onWebsocketMessage
函数,根据收到的消息,该函数将发送其他函数调用。setRemoteDescription
和addIceCandidate
是在执行过程中调用的两个函数ternals屏幕截图没有显示它们,因此您可能希望检查是否将其路由到正确的对等连接谢谢您的回复!我想我已经将问题缩小到我们的coturn服务器。我看到一些“分配超时”错误行。不过,您的工作流程很有用!一旦我弄清楚coturn的内容,如果这仍然不起作用,我将使用它是一个向导
) {
return new Promise((resolve, reject) => {
if (this.rtcPeer) {
resolve();
}
console.log('started connecting');
const rtcPeerOptions = {
iceServers: [TRUNCATED],
};
console.log('rtcPeerOptions', rtcPeerOptions);
this.rtcPeer = new RTCPeerConnection(rtcPeerOptions);
console.log('rtcPeer object: ', this.rtcPeer);
this.rtcPeer.onerror = reject;
this.rtcPeer.onicecandidate = (candidate) => { this.handleIceCandidateEvent(candidate); };
this.rtcPeer.oniceconnectionstatechange = () => {
this.handleIceConnectionStateChangeEvent();
};
this.rtcPeer.onaddstream = () => { console.log('handleAddStreamEvent'); };
this.rtcPeer.onremovestream = () => { console.log('handleRemoveStreamEvent'); };
this.rtcPeer.onicegatheringstatechange = () => { console.log('handleIceGatheringStateChangeEvent'); };
this.rtcPeer.onsignalingstatechange = () => { console.log('handleSignalingStateChangeEvent'); };
this.rtcPeer.onnegotiationneeded = () => { console.log('handleNegotiationNeededEvent'); };
resolve();
});
}
this.rtcPeer.oniceconnectionstatechange = () => {
this.handleIceConnectionStateChangeEvent();
};