RTCDataChannel
Baseline
広く利用可能
*
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2020年1月以降、すべてのブラウザーで利用可能です。
* この機能の一部は、対応レベルが異なる場合があります。
RTCDataChannel インターフェイスは、2 つのピア間で双方向に任意のデータを転送するためのネットワークチャンネルを表現します。すべてのデータチャンネルは RTCPeerConnection に関連付けられており、それぞれのピアコネクションは理論上、最大 65,534 個のデータチャンネルを持つことができます(実際の上限はブラウザーごとに異なります)。
データチャンネルを作成してリモートのピアに参加するかを問い合わせるには、RTCPeerConnection の createDataChannel() メソッドを呼び出します。データ交換に招かれているピアは datachannel イベント (RTCDataChannelEvent 型) を受け取って、コネクションにデータチャンネルが追加されたことを知ります。
RTCDataChannel は移譲可能オブジェクトです。
インスタンスプロパティ
EventTarget からプロパティを継承しています。
binaryType-
文字列で、
RTCDataChannelで受信したバイナリーデータを表現するために使用されるオブジェクトの種類を指定します。 値はWebSocket.binaryTypeプロパティで許可されているものと同じです。Blobオブジェクトを使用する場合はblob、ArrayBufferオブジェクトを使用する場合はarraybufferを指定します。 既定値はblobです。 bufferedAmount読取専用-
データチャンネルで送信するために現在キューイングされているデータのバイト数を返します。
bufferedAmountLowThreshold-
バッファリングされた送信データのうち、 "low" とみなされるバイト数を指定します。 既定値は 0 です。
id読取専用-
RTCDataChannelを一意に識別するための ID 番号(0 から 65,534 の間)を返します。 label読取専用-
文字列で、データチャンネルを記述している名前を返します。 このラベルは一意である必要はありません。
maxPacketLifeTime読取専用-
データチャンネルが作成されたときに設定された、ブラウザーがメッセージの送信を試みるのにかかる許容時間 (ミリ秒単位)、または
nullを返します。 maxRetransmits読取専用-
データチャンネルが作成されたときに設定された、ブラウザーがあきらめる前にメッセージを再送信しようとする最大回数、または最大回数がないことを示す
nullを返します。 negotiated読取専用-
RTCDataChannelの接続が、ウェブアプリケーションによって交渉されたのか (true) あるいは WebRTC レイヤーによって交渉されたのか (false) を示します。 既定値はfalseです。 ordered読取専用-
データチャンネルのメッセージが順番通りに配送されることを保証するかどうかを示します。 既定値は
trueで、データチャンネルが実際に順序どおりに配送されることを示します。 protocol読取専用-
使用されているサブプロトコルの名前を格納した文字列を返します。 データチャンネルの作成時にプロトコルが指定されなかった場合、このプロパティの値は空文字列 (
"") となります。 readyState読取専用-
データチャンネルの基盤となるデータ接続の状態を示す文字列を返します。
connecting,open,closing,closedの値のいずれかを持つ可能性があります。
古いプロパティ
reliable読取専用-
データチャンネルが reliable であるかどうかを示します。
インスタンスメソッド
EventTarget からもメソッドを継承しています。
close()-
RTCDataChannelを閉じました。 どちらのピアもこのメソッドを呼び出してチャンネルの閉鎖を開始することが許可されています。 send()-
データチャンネルを経由してリモートピアーにデータを送信します。
イベント
bufferedamountlow-
送信データバッファー内のデータバイト数が
bufferedAmountLowThresholdで指定する値以下になると送信されます。 close-
基盤となるデータトランスポートが閉じられたときに送信されます。
closing-
基盤となるデータトランスポートが閉じ始めようとするときに送られます。
error-
データチャンネルにエラーが発生したときに送信されます。
message-
リモートピアからメッセージを受信したときに送信されます。 メッセージのコンテンツは、イベントの
dataプロパティで得ることができます。 open-
データチャンネルが最初に開かれたとき、または既存のデータチャンネルの基盤となる接続が再び開かれたときに送信されます。
データ形式
基礎となるデータ形式は、 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" のみを指定することができます。
例
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");
};
仕様書
| 仕様書 |
|---|
| WebRTC: Real-Time Communication in Browsers> # rtcdatachannel> |