Javascript Webrtc将ice候选添加到远程对等

Javascript Webrtc将ice候选添加到远程对等,javascript,node.js,webrtc,Javascript,Node.js,Webrtc,下面是来自google webrtc教程的示例webrtc对等连接代码。我无法正确理解addIceCandidate()如何使用onIceCandidate()将其Ice候选对象添加到远程对等方。这里event.candidate是什么意思。如能作出明确解释,将不胜感激 function onIceCandidate(pc, event) { //pc1.onicecandidate if (event.candidate) { getOtherPc(pc).addIceCand

下面是来自google webrtc教程的示例webrtc对等连接代码。我无法正确理解addIceCandidate()如何使用onIceCandidate()将其Ice候选对象添加到远程对等方。这里event.candidate是什么意思。如能作出明确解释,将不胜感激

function onIceCandidate(pc, event) {   //pc1.onicecandidate
  if (event.candidate) {
    getOtherPc(pc).addIceCandidate(
      new RTCIceCandidate(event.candidate)
    ).then(
      function() {
        onAddIceCandidateSuccess(pc);
      },
      function(err) {
        onAddIceCandidateError(pc, err);
      }
    );

当对等方A发现ICE候选(可能用于通信的潜在路由)时,它需要将该ICE候选发送给对等方B(反之亦然)。对等B然后将该ICE候选添加到其连接中。两个对等方以这种方式交换ICE候选者,直到他们找到了双方能够直接使用的最佳路径


在这个简单的示例中,对等点A和B似乎在同一台机器中,因此(dummy)
getOtherPc
函数可以获得“其他对等点”的句柄,您可以直接使用其
addIceCandidate
方法。但实际上,您必须使用信令服务器发送ICE候选者;对等方可以通过网络交换信息的其他方式。通常,该信令服务器将使用websocket连接,通过该连接可以近实时地传递信息。

解释了ice候选对象是什么(以及理解事物所需的许多其他概念),例如客户端a和B访问web应用程序所在的同一web服务器。即使在
have local offer
状态下,
onicecandidate
也会被调用。这可能吗?我在想
ICE候选者
事件将在
拥有远程pranswer
后触发(即
稳定
)是的,在我脑海中,ICE候选者收集将在您设置本地描述后立即开始。事实上,每个ICE候选对象都会成为本地描述的一部分,您可以等到ICE收集完成后再发送包含ICE候选对象的完整本地描述。如果你一个接一个地发送ICE候选对象,这就是所谓的“冰滴”,这是一种可选行为。我遇到了一个答案,说你只能在设置远程描述后添加ICE候选对象。这是真的吗?一旦你有了自己的本地描述,你就会发现ICE候选者。然后将该候选对象发送到远程对等方B。该对等方只有在具有对等方A的会话描述时才能设置它(将其添加到对等方A的会话描述中)。再一次,将ICE候选人视为SDP的成员,事实上,如果你如上所述等待足够长的时间,他们就会这样做。稍后单独接收ICE候选人并添加他们只是在事后修改远程SDP。