RTCPeerConnection
は、WebRTC API の中心的なインターフェースです。これは、
ローカルピアとリモートピアの間の接続を表し、
接続を確立するために必要な関数とイベントが含まれます。
ピア接続を確立する
WebRTC 機能を実装するアプリケーションは、通常、WebRTC 機能に
RTCPeerConnection
インターフェース。呼び出し元(つまりピア
接続の確立プロセスは通常、
次のとおりです。
- 適切な ICE を含む新しい
RTCPeerConnection
インスタンスを作成する できます。 RTCPeerConnection.createOffer()
を使用してローカル SDP の説明を作成します。- 次のコマンドを使用して、ローカル SDP の説明を設定します。
RTCPeerConnection.setLocalDescription()
。 - (シグナリング サービスを使用して)ローカル SDP の説明をリモート 使用します。
RTCPeerConnection
でicecandidate
イベントのリスナーを登録します。icecandidate
イベントごとに、(シグナリング サービスを使用して) 構成されます- シグナリング サービスからリモート SDP の説明を受信するまで待機する。
RTCPeerConnection.setRemoteDescription()
を使用して設定します。 - シグナリング サービスからのリモート ICE 候補の受信を待ち、
RTCPeerConnection.addIceCandidate()
を使用する
呼び出し先側ではプロセスは若干異なります。
- 適切な ICE を含む新しい
RTCPeerConnection
インスタンスを作成する できます。 - シグナリング サービスからリモート SDP の説明を受信するまで待機する。
RTCPeerConnection.setRemoteDescription()
を使用して設定します。 - 次の呼び出しを使用して、リモート SDP の説明に対する回答を作成します。
RTCPeerConnection.createAnswer()
。 - (シグナリング サービスを使用して)リモートピアに回答を転送します。
RTCPeerConnection
でicecandidate
イベントのリスナーを登録します。icecandidate
イベントごとに、(シグナリング サービスを使用して) 構成されます- シグナリング サービスからのリモート ICE 候補の受信を待ち、
RTCPeerConnection.addIceCandidate()
を使用する
この API の課題は、これらのオペレーションのほとんどが非同期であること、
そのため、WebRTC アプリケーションの実際の実装が複雑になることがよくあります。
多くの関数は Promise
を返しますが、これは
次のステップに進むことができます。
この API を使用してアプリケーションを実装する場合は、
デベロッパーはリスナーを登録する代わりに async
と await
を使用する
(Promise.then()
を使用)。これにより、コードが追跡しやすくなるためです。検討事項
次の例をご覧ください。
function createAndSendOffer(peerConnection, signallingService) {
peerConnection.createOffer()
.then(offer => {
signallingService.send({
type: 'offer',
data: offer
});
});
}
async
と await
を使用して上記のコードを記述すると、次のようになります。
async function createAndSendOffer(peerConnection, signallingService) {
const offer = await peerConnection.createOffer();
signallingService.send({
type: 'offer',
data: offer
});
}