RTCDataChannel
==============

**`RTCDataChannel`** インターフェイスは、2 つのピア間で双方向に任意のデータを転送するためのネットワークチャンネルを表現します。すべてのデータチャンネルは `RTCPeerConnection` に関連付けられており、それぞれのぴあコネクションは理論上、最大 65,534 個のデータチャンネルを持つことができます（実際の上限はブラウザーごとに異なります）。

データチャンネルを作成してリモートのピアに参加するかを問い合わせるには、`RTCPeerConnection` の `createDataChannel()` (en-US) メソッドを呼び出します。データ交換に招かれているピアは `datachannel` (en-US) イベント (`RTCDataChannelEvent` 型) を受け取って、コネクションにデータチャンネルが追加されたことを知ります。

`RTCDataChannel` は移譲可能オブジェクトです。

EventTarget

RTCDataChannelインスタンスプロパティ
-----------

*`EventTarget` からプロパティを継承しています。*

`binaryType` (en-US)

 文字列で、 `RTCDataChannel` で受信したバイナリーデータを表現するために使用されるオブジェクトの種類を指定します。
 値は `WebSocket.binaryType` プロパティで許可されているものと同じです。
 `Blob` オブジェクトを使用する場合は `blob`、 `ArrayBuffer` オブジェクトを使用する場合は `arraybuffer` を指定します。
 既定値は `blob` です。


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

データチャンネルで送信するために現在キューイングされているデータのバイト数を返します。

`bufferedAmountLowThreshold` (en-US)

 バッファリングされた送信データのうち、 "low" とみなされるバイト数を指定します。
 既定値は 0 です。


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

`RTCDataChannel` を一意に識別するための ID 番号（0 から 65,534 の間）を返します。

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

 文字列で、データチャンネルを記述している名前を返します。
 このラベルは一意である必要はありません。


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

データチャンネルが作成されたときに設定された、ブラウザーがメッセージの送信を試みるのにかかる許容時間 （ミリ秒単位）、または `null` を返します。

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

データチャンネルが作成されたときに設定された、ブラウザーがあきらめる前にメッセージを再送信しようとする最大回数、または最大回数がないことを示す `null` を返します。

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

`RTCDataChannel` の接続が、ウェブアプリケーションによって交渉されたのか (`true`) あるいは WebRTC レイヤーによって交渉されたのか (`false`) を示します。
 既定値は `false` です。


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

 データチャンネルのメッセージが順番通りに配送されることを保証するかどうかを示します。
 既定値は `true` で、データチャンネルが実際に順序どおりに配送されることを示します。


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

 使用されているサブプロトコルの名前を格納した文字列を返します。
 データチャンネルの作成時にプロトコルが指定されなかった場合、このプロパティの値は空文字列 (`""`) となります。


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

 データチャンネルの基盤となるデータ接続の状態を示す文字列を返します。
 `connecting`, `open`, `closing`, `closed` の値のいずれかを持つ可能性があります。


### 古いプロパティ

`reliable` (en-US) 読取専用  
非推奨

Non-standard

データチャンネルが *reliable* であるかどうかを示します。

インスタンスメソッド
----------

*`EventTarget` からもメソッドを継承しています。*

`close()` (en-US)

`RTCDataChannel` を閉じました。
 どちらのピアもこのメソッドを呼び出してチャンネルの閉鎖を開始することが許可されています。


`send()` (en-US)

データチャンネルを経由してリモートピアーにデータを送信します。

### イベント

`bufferedamountlow` (en-US)

送信データバッファー内のデータバイト数が `bufferedAmountLowThreshold` (en-US) で指定する値以下になると送信されます。

`close` (en-US)

基盤となるデータトランスポートが閉じられたときに送信されます。

`closing` (en-US)

基盤となるデータトランスポートが閉じ始めようとするときに送られます。

`error` (en-US)

データチャンネルにエラーが発生したときに送信されます。

`message` (en-US)

 リモートピアからメッセージを受信したときに送信されます。
 メッセージのコンテンツは、イベントの `data` プロパティで得ることができます。


`open` (en-US)

データチャンネルが最初に開かれたとき、または既存のデータチャンネルの基盤となる接続が再び開かれたときに送信されます。

データ形式
-----

基礎となるデータ形式は、 IEEE の仕様書 SDP Offer/Answer Procedures for SCTP over DTLS Transport(RFC 8841) によって定義されています。現在の形式では、そのプロトコルを `"UDP/DTLS/SCTP"` (SCTP を運ぶ DTLS を運ぶ UDP) または `"TCP/DTLS/SCTP"` (SCTP を運ぶ DTLS を運ぶ TCP) のいずれかに指定する。古いブラウザーでは `"DTLS/SCTP"` のみを指定することができます。

例
-


```js
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("my channel");

dc.onmessage = (event) => {
  console.log(`received: ${event.data}`);
};

dc.onopen = () => {
  console.log("datachannel open");
};

dc.onclose = () => {
  console.log("datachannel close");
};
```

仕様書
---

| Specification |
| --- |
| WebRTC: Real-Time Communication in Browsers # rtcdatachannel |

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

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

関連情報
----

* WebRTC API