如何开始收集ICE候选人以进行对等连接

时间:2016-07-22 18:39:03

标签: javascript webrtc real-time p2p

我正在开发两个对等体之间的信号系统,并注意到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
    }
}

1 个答案:

答案 0 :(得分:8)

一旦您使用通过createOffer或createAnswer生成的SDP调用setLocalDescription,就会开始收集ICE。

如果您不想使用涓冰,请等待null候选者,然后发送peerConn.localDescription.sdp的内容 - 然后应该包括候选者。