[英]Chrome does not generate the ice candidate , WebRTC
我正在嘗試在本地使用 Chrome 到 Chrome 瀏覽器的兩個對等方之間建立視頻通話,而不是使用STUN/TURN服務器。
想象第一個同伴的名字是“ Sara ”,她以呼叫者的身份呈現視頻通話。 第二個同伴的名字是“比爾”,他是一個觀眾,只看薩拉的視頻。
1- Sara 的計算機生成一個報價並使用pc.setLocalDescription(offer)
將其設置為本地描述。
2- 它使用信令服務器向 Bill 發送生成的報價。
3- 比爾的計算機使用pc.setRemoteDescription(offer)
將來自 Sara 的傳入報價設置為遠程描述。
4- Bill 生成一個答案並將其設置為本地描述。
5- Bill 使用信令服務器將生成的答案發送給 Sara。
6- Sara 得到答案並將其設置為遠程描述。
我已經為雙方的那些冰候選人定義了一個事件偵聽器:
pc.onicecandidate = (event)=>{
console.log("Event : ",event);
pc.addIceCandidate(event.candidate);
};
在 Chrome 中它從不調用pc.onicecandidate
,我的意思是onicecandidate
從不執行和記錄,但在 Firefox 它記錄一個事件 object ,它的candidate
屬性等於null
請有人能告訴我pc.onicecandidate = (event)=>...
何時調用?
當 setLocalDescription() 成功時,onicecandidate 調用。
在 onececandidate 中,事件參數將有自己的候選人。
因此,您必須將 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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.