Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Koneksi peer

RTCPeerConnection adalah antarmuka pusat di API WebRTC. Ini mewakili koneksi antara peer lokal dan jarak jauh, dan menyediakan semua fungsi dan peristiwa yang diperlukan untuk membuat koneksi.

Membangun koneksi rekan

Aplikasi yang menerapkan fungsionalitas WebRTC biasanya akan sangat bergantung pada antarmuka RTCPeerConnection . Dari sisi pemanggil (yaitu, rekan yang memulai koneksi), proses untuk membuat koneksi biasanya sebagai berikut:

  1. Buat instance RTCPeerConnection baru dengan konfigurasi ICE yang sesuai.
  2. Buat deskripsi SDP lokal menggunakan RTCPeerConnection.createOffer() .
  3. Setel deskripsi SDP lokal menggunakan RTCPeerConnection.setLocalDescription() .
  4. Transfer (menggunakan layanan pensinyalan) deskripsi SDP lokal ke peer jarak jauh.
  5. Daftarkan listener untuk acara icecandidate di RTCPeerConnection .
  6. Untuk setiap event icecandidate , transfer (menggunakan layanan pensinyalan) ke peer jarak jauh.
  7. Tunggu deskripsi SDP jarak jauh yang masuk dari layanan pensinyalan dan setel menggunakan RTCPeerConnection.setRemoteDescription() .
  8. Tunggu kandidat ICE jarak jauh yang masuk dari layanan pensinyalan dan tambahkan mereka menggunakan RTCPeerConnection.addIceCandidate()

Di sisi callee, prosesnya sedikit berbeda.

  1. Buat instance RTCPeerConnection baru dengan konfigurasi ICE yang sesuai.
  2. Tunggu deskripsi SDP jarak jauh yang masuk dari layanan pensinyalan dan setel menggunakan RTCPeerConnection.setRemoteDescription() .
  3. Buat jawaban untuk deskripsi SDP jarak jauh dengan memanggil RTCPeerConnection.createAnswer() .
  4. Transfer (menggunakan layanan pensinyalan) jawaban ke peer jarak jauh.
  5. Daftarkan listener untuk event icecandidate di RTCPeerConnection .
  6. Untuk setiap event icecandidate , transfer (menggunakan layanan pensinyalan) ke peer jarak jauh.
  7. Tunggu kandidat ICE jarak jauh yang masuk dari layanan pensinyalan dan tambahkan mereka menggunakan RTCPeerConnection.addIceCandidate()

Tantangan dengan API ini adalah bahwa sebagian besar operasi ini tidak sinkron, yang seringkali membuat implementasi aktual aplikasi WebRTC menjadi rumit. Banyak fungsi mengembalikan Promise yang harus diselesaikan sebelum langkah proses berikutnya dapat dilanjutkan.

Direkomendasikan bahwa ketika mengimplementasikan aplikasi menggunakan API ini, pengembang menggunakan async dan await daripada mendaftarkan pendengar (menggunakan Promise.then() ), karena ini membuat kode Anda lebih mudah diikuti. Perhatikan contoh berikut:

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

Saat menulis kode di atas menggunakan async dan await , kami mendapatkan yang berikut:

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