Chrome 不生成ice candidate,WebRTC
Chrome does not generate the ice candidate , WebRTC
我正在尝试在 local[= 使用 Chrome 到 Chrome 浏览器在两个对等点之间建立视频通话47=],未使用 STUN/TURN 服务器。
假设第一个同伴的名字是“Sara”,她作为主叫方进行视频通话。
第二个同行的名字是“Bill”,他是观众,只看了 Sara 的视频。
1- Sara 的计算机生成报价并将其设置为使用 pc.setLocalDescription(offer)
的本地描述。
2- 它使用信令服务器将生成的报价发送给 Bill。
3- Bill 的计算机使用 pc.setRemoteDescription(offer)
.
将来自 Sara 的传入报价设置为远程描述
4- Bill 生成一个答案并将其设置为本地描述。
5- Bill 使用信令服务器将生成的答案发送给 Sara。
6- Sara 得到答案并将其设置为远程描述。
我已经为双方的 ice-candidates 定义了一个事件监听器:
pc.onicecandidate = (event)=>{
console.log("Event : ",event);
pc.addIceCandidate(event.candidate);
};
在 Chrome 中它从不调用 pc.onicecandidate
,我的意思是 onicecandidate
从不执行和记录,但在 Firefox 中它记录一个事件对象,它的 candidate
属性 等于 null
.
有人能告诉我 pc.onicecandidate = (event)=>...
调用的确切时间吗?
当 setLocalDescription() 成功时,onicecandidate 调用。
在onicecandidate中,事件参数会有自己的候选。
所以你必须将 Sara 的候选人发送给 Bill,反之亦然。
如果 Sara 或 Bill 收到对手的候选人,则该候选人必须添加到 pc。
const pc = new RTCPeerConnection();
pc.onicecandidate = evt => {
// send evt.candidate to opponent
// you don't need to add own candidate self.
};
...
pc.createOffer().then(sdp => {
pc.setLocalDescription(sdp); // onicecandidate invokes !
// send sdp to opponent.
}).catch(err => console.error(err));
我正在尝试在 local[= 使用 Chrome 到 Chrome 浏览器在两个对等点之间建立视频通话47=],未使用 STUN/TURN 服务器。
假设第一个同伴的名字是“Sara”,她作为主叫方进行视频通话。 第二个同行的名字是“Bill”,他是观众,只看了 Sara 的视频。
1- Sara 的计算机生成报价并将其设置为使用 pc.setLocalDescription(offer)
的本地描述。
2- 它使用信令服务器将生成的报价发送给 Bill。
3- Bill 的计算机使用 pc.setRemoteDescription(offer)
.
4- Bill 生成一个答案并将其设置为本地描述。
5- Bill 使用信令服务器将生成的答案发送给 Sara。
6- Sara 得到答案并将其设置为远程描述。
我已经为双方的 ice-candidates 定义了一个事件监听器:
pc.onicecandidate = (event)=>{
console.log("Event : ",event);
pc.addIceCandidate(event.candidate);
};
在 Chrome 中它从不调用 pc.onicecandidate
,我的意思是 onicecandidate
从不执行和记录,但在 Firefox 中它记录一个事件对象,它的 candidate
属性 等于 null
.
有人能告诉我 pc.onicecandidate = (event)=>...
调用的确切时间吗?
当 setLocalDescription() 成功时,onicecandidate 调用。
在onicecandidate中,事件参数会有自己的候选。
所以你必须将 Sara 的候选人发送给 Bill,反之亦然。
如果 Sara 或 Bill 收到对手的候选人,则该候选人必须添加到 pc。
const pc = new RTCPeerConnection();
pc.onicecandidate = evt => {
// send evt.candidate to opponent
// you don't need to add own candidate self.
};
...
pc.createOffer().then(sdp => {
pc.setLocalDescription(sdp); // onicecandidate invokes !
// send sdp to opponent.
}).catch(err => console.error(err));