我正在开发两个对等体之间的信号系统,并注意到RTCPeerConnection.onicecandidate事件没有被触发。我检查了iceGatheringState,它总是返回" new"意思是同伴连接还没有开始搜索冰候选人。
如何从本地机器开始收集冰候选对象以发送给同伴?
和
如果我不想涓涓细流,那么一旦聚集,我怎么能通过sdp发送它们呢?
这是我目前的代码,我能够成功获取sdp数据并捕获它们以便发送,以便检查两个客户端是否连接是唯一的问题。
var peerConn = new webkitRTCPeerConnection(
{'iceServers':[{'url':'stun:stun.1.google.com:19302'}]}
);
var remoteConn = new webkitRTCPeerConnection(
{'iceServers':[{'url':'stun:stun.1.google.com:19302'}]}
);
alert(peerConn.iceGatheringState);
///Event Handlers//
//will be called when each event occurs
//onicecandidate
//returns local ice candidates (when gathered) to be sent to peer
//peerConn.onicecandidate = onicecandidate;
peerConn.onicecandidate = function(iceEvent){ //not firing
if(iceEvent.candidate === null){
alert(peerConn.iceConnectionState);
alert(iceEvent.candidate);
//send to peer or put in with sdp data
}
}
答案 0 :(得分:8)
一旦您使用通过createOffer或createAnswer生成的SDP调用setLocalDescription,就会开始收集ICE。
如果您不想使用涓冰,请等待null候选者,然后发送peerConn.localDescription.sdp的内容 - 然后应该包括候选者。