【问题标题】:Webrtc adding ice candidate to remote peerWebrtc 将 ice 候选者添加到远程对等点
【发布时间】:2018-05-24 15:41:18
【问题描述】:

以下是来自 google webrtc 教程的示例 webrtc 点对点连接代码。 this link. 我无法正确理解 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);
      }
    );

【问题讨论】:

标签: javascript node.js webrtc


【解决方案1】:

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

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

【讨论】:

  • 假设客户端 A 和 B 访问托管 Web 应用程序的同一个 Web 服务器。即使在 have-local-offer 状态下,onicecandidate 也会被调用。这可能吗?我在想icecandidate 事件将在have-remote-pranswer 之后触发(即stable
  • 是的,我想不到,一旦您设置了本地描述,ICE 候选人聚会就开始了。事实上,每个 ICE 候选都成为本地描述的一部分,您可以等到 ICE 收集完成,然后简单地发送完整的本地描述,包括 ICE 候选。如果您逐一发送 ICE 候选人,则称为 ICE 涓涓,是可选行为。
  • 我遇到了一个答案here,说你只能在远程描述设置后添加冰候选。这是真的吗?
  • 好吧,只要您有自己的本地描述,您就会发现 ICE 候选人。然后,您将该候选对象发送到远程对等点 B。该对等点只有在它具有对等点 A 的会话描述时才能设置它(将其添加到您的对等点 A 的会话描述中)。再次,将 ICE 候选人视为属于 SDP,事实上,如果您如上所述等待足够长的时间,他们就会这样做。以后单独接收ICE候选人并添加他们只是事后修改远程SDP。
猜你喜欢
  • 2016-08-08
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多