Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript peer\u connection.onicecandidate()函数做什么?什么是ice\u事件?_Javascript_Webrtc - Fatal编程技术网

Javascript peer\u connection.onicecandidate()函数做什么?什么是ice\u事件?

Javascript peer\u connection.onicecandidate()函数做什么?什么是ice\u事件?,javascript,webrtc,Javascript,Webrtc,我很难理解onicecandidate函数的范围。 ice候选者如何帮助建立对等连接。谁首先发送ice候选者? 在后台,webrtc根据可用的网络连接和通过JSAPI传递给它的ice服务器列表来收集本地候选服务器 一旦ice候选者准备就绪,它将通过onicecandidate API提供给JS层 如果您使用的是涓流ICE,那么您可以立即通过信令路径将候选者发送到远程对等方。否则,等待最后一个(空)候选,按优先级排序,将它们添加到提供/应答sdp,并通过信令路径发送提供/应答。这通常由浏览器自动完

我很难理解onicecandidate函数的范围。 ice候选者如何帮助建立对等连接。谁首先发送ice候选者?

  • 在后台,webrtc根据可用的网络连接和通过JSAPI传递给它的ice服务器列表来收集本地候选服务器
  • 一旦ice候选者准备就绪,它将通过onicecandidate API提供给JS层
  • 如果您使用的是涓流ICE,那么您可以立即通过信令路径将候选者发送到远程对等方。否则,等待最后一个(空)候选,按优先级排序,将它们添加到提供/应答sdp,并通过信令路径发送提供/应答。这通常由浏览器自动完成
  • 您可以在此处查看握手规范:

    • 对等设备将无法使用自己的专用IP将媒体流传输到其他对等设备。所以我们需要NAT穿越服务器(ICE服务器)将私有IP映射到公共IP

      因此,客户端应用程序应该向ICE服务器请求他自己的ICE候选者“这是公共id”

      首先,呼叫方将请求其公共IP(ICE候选),并通过信令服务器将其发送给另一个对等方

      当另一个人收到候选人时,他向ICE服务器询问他自己的候选人,并将其发送回给来电者

      当两个对等点彼此拥有ice候选点(公共IP)时,他们可以进行P2P流

      冰问题

      20%ICE服务器-STUN协议将无法提供公共IP。因为两个媒体设备都位于对称NAT后面!或者P2P流量被防火墙拦截

      在这种情况下,P2P流媒体将不可靠! 为了解决这些问题,我们必须使用外部媒体中继服务器–TURN服务器,这是ICE服务器支持的协议

      下面是一个例子:

      connection.onicecandidate = function(newRTCPeerConnectionIceEvent) {
      
          // a new candidate has been created
          var newRTCIceCandidate = newRTCPeerConnectionIceEvent.candidate;
          // could send this to the remote peer
      };
      
      候选者代表媒体流的目的地(发送或接收),在SDP中看起来如下:

      a=candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host