谷歌致力于推进种族平等的黑人社区。 怎么看。
此页面由 Cloud Translation API 翻译。
Switch to English

对等连接

RTCPeerConnection是的WebRTC API中的核心接口。它代表了本地和远程服务器之间的连接,所有邓贤兰必要的功能和活动,以建立连接。

建立对等连接

实现WebRTC功能的应用程序通常会严重依赖于RTCPeerConnection接口。从呼叫者侧(即,对等发起连接),以建立连接的过程通常如下:

  1. 创建一个新的RTCPeerConnection用适当的ICE配置实例。
  2. 创建使用本地SDP描述RTCPeerConnection.createOffer()
  3. 设置使用本地SDP描述RTCPeerConnection.setLocalDescription()
  4. 转移(使用信令服务)本地SDP描述到远端对等体。
  5. 注册一个监听器icecandidate的事件RTCPeerConnection
  6. 对于每个icecandidate事件,将其传送(使用信令服务)到远端对等体。
  7. 等待来自信令服务的进入远程SDP描述,并使用设置RTCPeerConnection.setRemoteDescription()
  8. 从信令的服务等待传入的远程ICE候选,并使用添加它们RTCPeerConnection.addIceCandidate()

在被叫方,这个过程是一个略有不同。

  1. 创建一个新的RTCPeerConnection用适当的ICE配置实例。
  2. 等待来自信令服务的进入远程SDP描述,并使用设置RTCPeerConnection.setRemoteDescription()
  3. 通过调用创建的远程SDP描述一个答案RTCPeerConnection.createAnswer()
  4. 转移(使用信令服务)的答案为远端对等体。
  5. 注册一个监听器icecandidate的事件RTCPeerConnection
  6. 对于每个icecandidate事件,将其传送(使用信令服务)到远端对等体。
  7. 从信令的服务等待传入的远程ICE候选,并使用添加它们RTCPeerConnection.addIceCandidate()

这个API所面临的挑战是,大多数的这些操作都是异步的,这往往使得实际执行复杂的WebRTC应用。许多函数返回一个Promise ,其已得到解决之前,在这个过程中,下一步可以继续。

建议使用此API,开发人员使用化妆的实现应用程序时, asyncawait ,而不是注册监听器(使用Promise.then()因为这使你的代码更容易。请看下面的例子:

 function createAndSendOffer(peerConnection, signallingService) {
    peerConnection.createOffer()
                  .then(offer => {
                      signallingService.send({
                          type: 'offer',
                          data: offer
                      });
                  });
}
 

当写上面使用的代码asyncawait ,我们得到如下:

 async function createAndSendOffer(peerConnection, signallingService) {
    const offer = await peerConnection.createOffer();
    signallingService.send({
        type: 'offer',
        data: offer
    });
}