Google cam kết thúc đẩy bình đẳng chủng tộc đối với cộng đồng đen. Xem cách.
Trang này được dịch bởi Cloud Translation API.
Switch to English

kết nối Peer

Các RTCPeerConnection là giao diện trung tâm trong API WebRTC. Nó đại diện cho sự kết nối giữa các peer địa phương và từ xa, và Tỉnh tất cả các chức năng và các sự kiện cần thiết để thiết lập kết nối.

Thiết lập kết nối ngang hàng

Ứng dụng thực hiện chức năng WebRTC thường sẽ phụ thuộc rất nhiều vào RTCPeerConnection giao diện. Từ phía người gọi (có nghĩa là, các đồng đẳng bắt đầu một kết nối), quá trình thiết lập kết nối thường là những điều sau đây:

  1. Tạo mới RTCPeerConnection dụ với cấu hình ICE thích hợp.
  2. Tạo một mô tả SDP địa phương sử dụng RTCPeerConnection.createOffer() .
  3. Đặt mô tả SDP địa phương sử dụng RTCPeerConnection.setLocalDescription() .
  4. Chuyển (sử dụng một dịch vụ truyền tín hiệu) mô tả SDP địa phương để các peer từ xa.
  5. Đăng ký một người biết lắng nghe cho icecandidate sự kiện trên RTCPeerConnection .
  6. Đối với mỗi icecandidate sự kiện, chuyển nó (sử dụng một dịch vụ truyền tín hiệu) để peer từ xa.
  7. Chờ cho một mô tả SDP từ xa đến từ dịch vụ tín hiệu và đặt nó sử dụng RTCPeerConnection.setRemoteDescription() .
  8. Chờ cho các ứng cử viên ICE từ xa đến từ dịch vụ báo hiệu và thêm chúng bằng cách sử RTCPeerConnection.addIceCandidate()

Về phía callee, quá trình này là một chút khác nhau.

  1. Tạo mới RTCPeerConnection dụ với cấu hình ICE thích hợp.
  2. Chờ cho một mô tả SDP từ xa đến từ dịch vụ tín hiệu và đặt nó sử dụng RTCPeerConnection.setRemoteDescription() .
  3. Tạo một câu trả lời cho sự mô tả SDP từ xa bằng cách gọi RTCPeerConnection.createAnswer() .
  4. Chuyển (sử dụng một dịch vụ truyền tín hiệu) câu trả lời cho các peer từ xa.
  5. Đăng ký một người biết lắng nghe cho icecandidate sự kiện trên RTCPeerConnection .
  6. Đối với mỗi icecandidate sự kiện, chuyển nó (sử dụng một dịch vụ truyền tín hiệu) để peer từ xa.
  7. Chờ cho các ứng cử viên ICE từ xa đến từ dịch vụ báo hiệu và thêm chúng bằng cách sử RTCPeerConnection.addIceCandidate()

Thách thức với API này là hầu hết các hoạt động này là không đồng bộ, thường làm cho việc thực hiện thực tế của một ứng dụng WebRTC của phức tạp. Nhiều người trong số các chức năng trả về một Promise mà phải được giải quyết trước khi bước tiếp theo trong quá trình này có thể tiếp tục.

Chúng tôi đề nghị khi thực hiện một ứng dụng sử dụng API này, các nhà phát triển làm cho sử dụng asyncawait thay vì đăng ký người nghe (sử dụng Promise.then() ), vì điều này làm cho mã của bạn dễ dàng hơn để làm theo. Hãy xem xét ví dụ sau:

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

Khi viết mã trên sử dụng asyncawait , chúng tôi nhận được như sau:

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