【问题标题】:How to begin gathering ICE candidates for peer connection如何开始为对等连接收集 ICE 候选者
【发布时间】:2016-07-22 18:39:03
【问题描述】:

我正在开发两个对等方之间的信号系统,并注意到 RTCPeerConnection.oniceccandidate 事件没有触发。我检查了 iceGatheringState,它总是返回为“新”,这意味着对等连接尚未开始搜索候选冰。

我如何从本地机器开始收集候选对象对象以发送给对等点?

如果我不想让候选人涓涓细流,我将如何在收集到他们后通过 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
    }
}

【问题讨论】:

    标签: javascript webrtc real-time p2p


    【解决方案1】:

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

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

    【讨论】:

    • 所以在非涓流解决方案中,sdp 生成和本地解密设置的函数只有在收到 null 候选后才会被调用,这意味着如果我之前调用它们,那么冰候选将不会添加了吗?
    • 没有。您只是不在空候选人之前向 SDP 发出信号。您必须生成 SDP 并调用 setLocalDescription 才能开始收集。试试this fiddle
    • 我没有打开任何数据通道或流。这可能是我的问题,我正在尝试实现小提琴,我会看看它是否有效。
    • 有效!我执行过程的顺序不正确
    • @PjRigor 你能显示代码吗,出于某种原因,我设置了 localdescription 并且在答案方面没有收集冰块,可能与添加流有关吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多