RTCDataChannel

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.

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

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

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

EventTarget RTCDataChannel

インスタンスプロパティ

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

binaryType

文字列で、 RTCDataChannel で受信したバイナリーデータを表現するために使用されるオブジェクトの種類を指定します。 値は WebSocket.binaryType プロパティで許可されているものと同じです。 Blob オブジェクトを使用する場合は blobArrayBuffer オブジェクトを使用する場合は 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" のみを指定することができます。

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

関連情報