RTCPeerConnection
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
RTCPeerConnection
インターフェイスは、ローカルコンピューターとリモートピアの間の WebRTC 接続を表します。リモートピアに接続したり、接続を維持・監視したり、不要になったら接続を切断したりするためのメソッドを提供します。
コンストラクター
RTCPeerConnection()
-
ローカルデバイスとリモートピア間の接続を表す、新しく作成された
RTCPeerConnection
を返します。
静的メソッド
generateCertificate()
-
X.509 証明書とそれに対応する秘密鍵を作成し、それが生成されると新しい
RTCCertificate
で解決されるPromise
を返します。
プロパティ
EventTarget
から継承したプロパティもあります。
canTrickleIceCandidates
読取専用-
論理値で、リモートピアがトリクル ICE 候補を受け入れることができるかどうかを返します。
connectionState
読取専用-
ピア接続の現在の状態を示します。
new
,connecting
,connected
,disconnected
,failed
,closed
のいずれかの文字列を返します。 currentLocalDescription
読取専用-
この
RTCPeerConnection
がリモートピアとの交渉を終了してから、直近で交渉に成功した接続のローカル側を記述したRTCSessionDescription
オブジェクトを返します。 また、この記述で表される提案や回答が最初にインスタンス化されて以降、 ICE エージェントによってすでに生成された可能性のある ICE 候補のリストも含まれます。 currentRemoteDescription
読取専用-
この
RTCPeerConnection
がリモートピアとの交渉を終了してから、直近で交渉に成功した接続のリモート側を記述したRTCSessionDescription
オブジェクトを返します。 また、この記述で表される提案や回答が最初にインスタンス化されて以降、 ICE エージェントによってすでに生成された可能性のある ICE 候補のリストも含まれます。 iceConnectionState
読取専用-
この RTCPeerConnection に関連する ICE エージェントの状態を文字列で返します。
new
,checking
,connected
,completed
,failed
,disconnected
,closed
の何れかの値になります。 iceGatheringState
読取専用-
接続の ICE 収集状態を表す文字列を返します。これにより、例えば ICE 候補の収集が終了したことを検出することができます。 取りうる値は、
new
,gathering
,complete
の何れかです。 localDescription
読取専用-
接続のローカル側のセッションを記述した
RTCSessionDescription
を返します。 まだ設定されていない場合は、null
を返します。 peerIdentity
読取専用-
リモートピアを識別する文字列を含む
RTCIdentityAssertion
に解決するPromise
を返します。 このプロミスが正常に解決されると、結果として得られる ID がターゲットピア ID になり、接続の間、変更されることはありません。 pendingLocalDescription
読取専用-
接続のローカル側で保留中の設定変更を記述した
RTCSessionDescription
オブジェクトを返します。 これは、現在の接続を記述するのではなく、近い将来に存在する可能性のある接続を記述します。 pendingRemoteDescription
読取専用-
接続のリモート側で保留中の設定変更を記述した
RTCSessionDescription
オブジェクトを返します。 これは、現在の接続を記述するのではなく、近い将来に存在する可能性のある接続を説明します。 remoteDescription
読取専用-
接続のリモート側の、設定とメディア情報を含むセッションを記述した
RTCSessionDescription
オブジェクトを返します。 まだ設定されていない場合は、null
を返します。 sctp
読取専用-
SCTP データを送受信するトランスポート層の SCTP を記述した
RTCSctpTransport
オブジェクトを返します。 SCTP が交渉されていない場合、この値はnull
です。 signalingState
読取専用-
他のピアに接続中または再接続中の、ローカル側のシグナリングプロセスの状態を記述した文字列を返します。 値は
stable
,have-local-offer
,have-remote-offer
,have-local-pranswer
,have-remote-pranswer
,closed
のうちのいずれかになります。
メソッド
EventTarget
から継承したメソッドもあります。
addIceCandidate()
-
RTCPeerConnection
のリモート記述に新しいリモート候補を追加し、リモート側の接続の状態を記述します。 addTrack()
-
新しい
MediaStreamTrack
を、相手側に送信されるトラックのセットに追加します。 addTransceiver()
-
新しい
RTCRtpTransceiver
を作成し、接続に関連付けられたトランシーバーのセットに追加します。 トランシーバーはそれぞれ、RTCRtpSender
とRTCRtpReceiver
が関連付けられた両方向のストリームを表します。 close()
-
現在のピア接続を終了します。
createAnswer()
-
WebRTC 接続の提案/回答交渉中にリモートピアから受け取った提案に対する SDP 回答の作成を開始します。 回答には、ブラウザーが対応しているコーデック、オプション、セッションにすでに接続されているメディア、すでに収集されている ICE 候補に関する情報が含まれます。
createDataChannel()
-
リモートピアとリンクした新しいチャネルの作成を開始し、その上であらゆる種類のデータを転送することができます。 これは、画像、ファイル転送、テキストチャット、ゲームアップデートパケットなどのバックチャネルコンテンツに便利です。
createOffer()
-
リモートピアとの新しい WebRTC 接続を開始するために、SDP 提案 の作成を開始する。 SDP提案には、WebRTCセッションにすでにアタッチされている
MediaStreamTrack
オブジェクト、コーデック、ブラウザーが対応しているオプションに関する情報、および ICE エージェントがすでに収集している候補が含まれており、シグナルチャネルを介して、接続を要求または既存の接続の構成を更新するために相手候補 に送信されます。 getConfiguration()
-
接続の現在の構成を示すオブジェクトを返す。
getIdentityAssertion()
-
ID アサーションの収集を開始し、文字列としてエンコードされた ID アサーションに解決する
Promise
を返します。 これはsignalingState
がclosed
でない場合のみ効果を持ちます。 getReceivers()
-
RTCRtpReceiver
オブジェクトの配列を返します。各オブジェクトは 1 つの RTP レシーバーを表します。 getSenders()
-
各オブジェクトは、 1 つのトラックのデータ送信に責任を負う RTP 送信者を表す
RTCRtpSender
オブジェクトの配列を返します。 getStats()
-
接続全体または指定された
MediaStreamTrack
に関する統計データを解決するPromise
を返します。 getTransceivers()
-
接続上のデータの送受信に使用されているすべての
RTCRtpTransceiver
オブジェクトのリストを返します。 removeTrack()
-
getSenders()
によって報告される送信者リストから対応するRTCRtpSender
を実際に削除せずに、指定したトラックからのメディア送信を停止するよう接続のローカル側に指示します。 トラックがすでに停止している場合、または接続の送信者リストにない場合、このメソッドは何の効果も持ちません。 restartIce()
-
ICE 候補の収集を、接続の両端でやり直すよう簡単に要求できるようにします。 これにより、 ICE の再起動を発生させるために、呼び出し側または受信側のどちらかが同じメソッドを使用することができ、プロセスが簡素化されます。
setConfiguration()
-
指定されたオブジェクトに含まれる値に基づいて、接続の現在の構成を設定します。 これにより、接続が使用する ICE サーバーや、使用するトランスポートポリシーを変更することができます。
setIdentityProvider()
-
Identity Provider (IdP) を引数で指定された 3 つの要素に設定します。 その名前、そのプロバイダーとの通信に使用するプロトコル、そしてユーザー名です。 プロトコルおよびユーザー名は省略可能です。
setLocalDescription()
-
接続に関連するローカルの説明を変更します。 この説明は、メディア形式を含む、接続のローカル側のプロパティを指定します。 これは
Promise
を返し、非同期に説明が変更されると履行されます。 setRemoteDescription()
-
指定されたセッション記述をリモートピアの現在の提案または回答として設定します。 説明は、メディア形式を含む、接続のリモート側のプロパティを指定します。 これは
Promise
を返し、非同期に説明が変更されると履行されます。
廃止されたメソッド
addStream()
非推奨-
音声または映像のローカルソースとして
MediaStream
を追加します。 この古いメソッドを使用する代わりに、リモートピアに送信したいトラックごとにaddTrack()
を 1 回使用する必要があります。 createDTMFSender()
非推奨-
特定の
MediaStreamTrack
と関連付けられた新たなRTCDTMFSender
を生成します。これにより、その接続において DTMF 音(電話のトーン信号、プッシュ音)を送れるようになります。 getStreamById()
非推奨-
接続のローカルまたはリモート側に関連する、指定された ID の
MediaStream
を返します。 このプロパティはgetSenders()
とgetReceivers()
メソッドに置き換えられました。 removeStream()
非推奨-
音声または映像のローカルソースとして
MediaStream
を削除します。 このメソッドは廃止されたため、代わりにremoveTrack()
を使用してください。
イベント
これらのイベントを待ち受けするには、 addEventListener()
を使用するか、イベントリスナーをこのインターフェイスの on<em>イベント名</em>
プロパティに代入するかしてください。
connectionstatechange
-
RTCPeerConnection
の全体的な接続状態が変化したときに送信されます。 datachannel
-
リモートピアが接続に
RTCDataChannel
を追加したときに送信されます。 icecandidate
-
指定された候補をリモートピアに送信することを要求するために送信されます。
icecandidateerror
-
ICE 候補の収集中にエラーが発生した場合に接続先に送信されます。イベントには、エラーの内容が記述さ れます。
iceconnectionstatechange
-
切断時など、 ICE の接続状態が変化したときに送信されます。
icegatheringstatechange
-
ICE レイヤーの収集状態 (
iceGatheringState
が変化したときに送信されます。 これは、 ICE 交渉がまだ始まっていないか (new
)、候補の収集を始めたか (gathering
)、終了したか (complete
) を示します。 negotiationneeded
-
ICE 接続の交渉または再交渉を行う必要があるときに送信されます。 これは、最初に接続を開くときにも、変化するネットワーク条件に適応する必要があるときにも発生します。 受信側は、オファーを作成し、相手ピアに送信することで応答する必要があります。
signalingstatechange
-
この接続の ICE 信号の状態が変化したときに送信されます。
track
-
接続を構成する
RTCRtpReceiver
インスタンスのいずれかに新しいトラックが追加された後に送信されます。
廃止されたイベント
addstream
非推奨-
新しい
MediaStream
が接続に追加されたときに送信されます。 この古いイベントを待ち受けるのではなく、track
イベントを待ち受けるために使用する必要があります。 接続に追加されたMediaStreamTrack
ごとに 1 つ送信されます。 removestream
非推奨-
domxref("MediaStream")}} が接続から削除されたときに送信されます。 この古いイベントを待ち受けるのではなく、それぞれのストリームの
removetrack
イベントを待ち受けるために使用する必要があります。
仕様書
Specification |
---|
WebRTC: Real-Time Communication in Browsers # interface-definition |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js
- http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-simple
- TutorRoom: Node.js HTML5 video capture, peer-to-peer video and filesharing application (source on GitHub)