RTCPeerConnection
=================

**`RTCPeerConnection`** インターフェイスは、ローカルコンピューターとリモートピアの間の WebRTC 接続を表します。リモートピアに接続したり、接続を維持・監視したり、不要になったら接続を切断したりするためのメソッドを提供します。

EventTarget

RTCPeerConnectionコンストラクター
--------

`RTCPeerConnection()`

ローカルデバイスとリモートピア間の接続を表す、新しく作成された `RTCPeerConnection` を返します。

静的メソッド
------

`generateCertificate()` (en-US)

X.509 証明書とそれに対応する秘密鍵を作成し、それが生成されると新しい `RTCCertificate` (en-US) で解決される `Promise` を返します。

プロパティ
-----

*`EventTarget` から継承したプロパティもあります。*

`canTrickleIceCandidates` 読取専用 

論理値で、リモートピアがトリクル ICE 候補を受け入れることができるかどうかを返します。

`connectionState` (en-US) 読取専用 

ピア接続の現在の状態を示します。 `new`, `connecting`, `connected`, `disconnected`, `failed`, `closed` のいずれかの文字列を返します。

`currentLocalDescription` (en-US) 読取専用 

 この `RTCPeerConnection` がリモートピアとの交渉を終了してから、直近で交渉に成功した接続のローカル側を記述した `RTCSessionDescription` オブジェクトを返します。
 また、この記述で表される提案や回答が最初にインスタンス化されて以降、 ICE エージェントによってすでに生成された可能性のある ICE 候補のリストも含まれます。


`currentRemoteDescription` (en-US) 読取専用 

 この `RTCPeerConnection` がリモートピアとの交渉を終了してから、直近で交渉に成功した接続のリモート側を記述した `RTCSessionDescription` オブジェクトを返します。
 また、この記述で表される提案や回答が最初にインスタンス化されて以降、 ICE エージェントによってすでに生成された可能性のある ICE 候補のリストも含まれます。


`iceConnectionState` (en-US) 読取専用 

 この RTCPeerConnection に関連する ICE エージェントの状態を文字列で返します。
 `new`, `checking`, `connected`, `completed`, `failed`, `disconnected`, `closed` の何れかの値になります。


`iceGatheringState` (en-US) 読取専用 

 接続の ICE 収集状態を表す文字列を返します。これにより、例えば ICE 候補の収集が終了したことを検出することができます。
 取りうる値は、 `new`, `gathering`, `complete` の何れかです。


`localDescription` 読取専用 

 接続のローカル側のセッションを記述した `RTCSessionDescription` を返します。
 まだ設定されていない場合は、 `null` を返します。


`peerIdentity` (en-US) 読取専用 

 リモートピアを識別する文字列を含む `RTCIdentityAssertion` (en-US) に解決する `Promise` を返します。
 このプロミスが正常に解決されると、結果として得られる ID がターゲットピア ID になり、接続の間、変更されることはありません。


`pendingLocalDescription` (en-US) 読取専用 

 接続のローカル側で保留中の設定変更を記述した `RTCSessionDescription` オブジェクトを返します。
 これは、現在の接続を記述するのではなく、近い将来に存在する可能性のある接続を記述します。


`pendingRemoteDescription` (en-US) 読取専用 

 接続のリモート側で保留中の設定変更を記述した `RTCSessionDescription` オブジェクトを返します。
 これは、現在の接続を記述するのではなく、近い将来に存在する可能性のある接続を説明します。


`remoteDescription` (en-US) 読取専用 

 接続のリモート側の、設定とメディア情報を含むセッションを記述した `RTCSessionDescription` オブジェクトを返します。
 まだ設定されていない場合は、`null`を返します。


`sctp` (en-US) 読取専用 

 SCTP データを送受信するトランスポート層の SCTP (en-US) を記述した `RTCSctpTransport` (en-US) オブジェクトを返します。
 SCTP が交渉されていない場合、この値は `null` です。


`signalingState` (en-US) 読取専用 

 他のピアに接続中または再接続中の、ローカル側のシグナリングプロセスの状態を記述した文字列を返します。
 値は `stable`, `have-local-offer`, `have-remote-offer`, `have-local-pranswer`, `have-remote-pranswer`, `closed` のうちのいずれかになります。


メソッド
----

*`EventTarget` から継承したメソッドもあります。*

`addIceCandidate()` (en-US)

`RTCPeerConnection` のリモート記述に新しいリモート候補を追加し、リモート側の接続の状態を記述します。

`addTrack()` (en-US)

新しい `MediaStreamTrack` を、相手側に送信されるトラックのセットに追加します。

`addTransceiver()` (en-US)

 新しい `RTCRtpTransceiver` (en-US) を作成し、接続に関連付けられたトランシーバーのセットに追加します。
 トランシーバーはそれぞれ、 `RTCRtpSender` (en-US) と `RTCRtpReceiver` (en-US) が関連付けられた両方向のストリームを表します。


`close()`

現在のピア接続を終了します。

`createAnswer()` (en-US)

 WebRTC 接続の提案/回答交渉中にリモートピアから受け取った提案に対する SDP (en-US) 回答の作成を開始します。
 回答には、ブラウザーが対応しているコーデック、オプション、セッションにすでに接続されているメディア、すでに収集されている ICE 候補に関する情報が含まれます。


`createDataChannel()` (en-US)

 リモートピアとリンクした新しいチャネルの作成を開始し、その上であらゆる種類のデータを転送することができます。
 これは、画像、ファイル転送、テキストチャット、ゲームアップデートパケットなどのバックチャネルコンテンツに便利です。


`createOffer()` (en-US)

 リモートピアとの新しい WebRTC 接続を開始するために、SDP (en-US) 提案 の作成を開始する。
 SDP提案には、WebRTCセッションにすでにアタッチされている`MediaStreamTrack` オブジェクト、コーデック、ブラウザーが対応しているオプションに関する情報、および ICE エージェントがすでに収集している候補が含まれており、シグナルチャネルを介して、接続を要求または既存の接続の構成を更新するために相手候補 に送信されます。


`getConfiguration()` (en-US)

接続の現在の構成を示すオブジェクトを返す。

`getIdentityAssertion()` (en-US)

 ID アサーションの収集を開始し、文字列としてエンコードされた ID アサーションに解決する `Promise` を返します。
 これは `signalingState` (en-US) が `closed` でない場合のみ効果を持ちます。


`getReceivers()` (en-US)

`RTCRtpReceiver` (en-US) オブジェクトの配列を返します。各オブジェクトは 1 つの RTP (en-US) レシーバーを表します。

`getSenders()` (en-US)

各オブジェクトは、 1 つのトラックのデータ送信に責任を負う RTP (en-US) 送信者を表す `RTCRtpSender` (en-US) オブジェクトの配列を返します。

`getStats()` (en-US)

接続全体または指定された `MediaStreamTrack` に関する統計データを解決する `Promise` を返します。

`getTransceivers()` (en-US)

接続上のデータの送受信に使用されているすべての `RTCRtpTransceiver` (en-US) オブジェクトのリストを返します。

`removeTrack()` (en-US)

`getSenders()` (en-US) によって報告される送信者リストから対応する `RTCRtpSender` (en-US) を実際に削除せずに、指定したトラックからのメディア送信を停止するよう接続のローカル側に指示します。
 トラックがすでに停止している場合、または接続の送信者リストにない場合、このメソッドは何の効果も持ちません。


`restartIce()` (en-US)

 ICE 候補の収集を、接続の両端でやり直すよう簡単に要求できるようにします。
 これにより、 ICE の再起動を発生させるために、呼び出し側または受信側のどちらかが同じメソッドを使用することができ、プロセスが簡素化されます。


`setConfiguration()` (en-US)

 指定されたオブジェクトに含まれる値に基づいて、接続の現在の構成を設定します。
 これにより、接続が使用する ICE サーバーや、使用するトランスポートポリシーを変更することができます。


`setIdentityProvider()` (en-US)

 Identity Provider (IdP) を引数で指定された 3 つの要素に設定します。
 その名前、そのプロバイダーとの通信に使用するプロトコル、そしてユーザー名です。
 プロトコルおよびユーザー名は省略可能です。


`setLocalDescription()` (en-US)

 接続に関連するローカルの説明を変更します。
 この説明は、メディア形式を含む、接続のローカル側のプロパティを指定します。
 これは `Promise` を返し、非同期に説明が変更されると履行されます。


`setRemoteDescription()` (en-US)

 指定されたセッション記述をリモートピアの現在の提案または回答として設定します。
 説明は、メディア形式を含む、接続のリモート側のプロパティを指定します。
 これは `Promise` を返し、非同期に説明が変更されると履行されます。


### 廃止されたメソッド

`addStream()` (en-US) 
非推奨

 音声または映像のローカルソースとして `MediaStream` を追加します。
 この古いメソッドを使用する代わりに、リモートピアに送信したいトラックごとに `addTrack()` (en-US) を 1 回使用する必要があります。


`createDTMFSender()` 
非推奨

特定の `MediaStreamTrack` と関連付けられた新たな `RTCDTMFSender` (en-US) を生成します。これにより、その接続において DTMF 音（電話のトーン信号、プッシュ音）を送れるようになります。

`getStreamById()` (en-US) 
非推奨

 接続のローカルまたはリモート側に関連する、指定された ID の `MediaStream` を返します。
 このプロパティは `getSenders()` (en-US) と `getReceivers()` (en-US) メソッドに置き換えられました。


`removeStream()` (en-US) 
非推奨

 音声または映像のローカルソースとして `MediaStream` を削除します。
 このメソッドは廃止されたため、代わりに `removeTrack()` (en-US) を使用してください。


イベント
----

これらのイベントを待ち受けするには、 `addEventListener()` を使用するか、イベントリスナーをこのインターフェイスの `on<em>イベント名</em>` プロパティに代入するかしてください。

`connectionstatechange` (en-US)

`RTCPeerConnection` の全体的な接続状態が変化したときに送信されます。

`datachannel` (en-US)

リモートピアが接続に `RTCDataChannel` を追加したときに送信されます。

`icecandidate` (en-US)

指定された候補をリモートピアに送信することを要求するために送信されます。

`icecandidateerror` (en-US)

ICE 候補の収集中にエラーが発生した場合に接続先に送信されます。イベントには、エラーの内容が記述さ れます。

`iceconnectionstatechange` (en-US)

切断時など、 ICE の接続状態が変化したときに送信されます。

`icegatheringstatechange` (en-US)

ICE レイヤーの収集状態 (`iceGatheringState` (en-US) が変化したときに送信されます。
 これは、 ICE 交渉がまだ始まっていないか (`new`)、候補の収集を始めたか (`gathering`)、終了したか (`complete`) を示します。


`negotiationneeded` (en-US)

ICE 接続の交渉または再交渉を行う必要があるときに送信されます。
 これは、最初に接続を開くときにも、変化するネットワーク条件に適応する必要があるときにも発生します。
 受信側は、オファーを作成し、相手ピアに送信することで応答する必要があります。


`signalingstatechange` (en-US)

この接続の ICE 信号の状態が変化したときに送信されます。

`track` (en-US)

接続を構成する `RTCRtpReceiver` (en-US) インスタンスのいずれかに新しいトラックが追加された後に送信されます。

### 廃止されたイベント

`addstream` (en-US) 
非推奨

 新しい `MediaStream` が接続に追加されたときに送信されます。
 この古いイベントを待ち受けるのではなく、 `track` (en-US) イベントを待ち受けるために使用する必要があります。
 接続に追加された `MediaStreamTrack` ごとに 1 つ送信されます。


`removestream` (en-US) 
非推奨

 domxref("MediaStream")}} が接続から削除されたときに送信されます。
 この古いイベントを待ち受けるのではなく、それぞれのストリームの `removetrack` イベントを待ち受けるために使用する必要があります。


仕様書
---

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # interface-definition |

ブラウザーの互換性
---------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

関連情報
----

* 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)