谷歌致力於推進種族平等的黑人社區。 怎麼看。
本頁面由 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
    });
}