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() (en-US) メソッドを呼び出します。データ交換に招かれているピアは datachannel (en-US) イベント (RTCDataChannelEvent 型) を受け取って、コネクションにデータチャンネルが追加されたことを知ります。

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

EventTarget RTCDataChannel

インスタンスプロパティ

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

binaryType (en-US)

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

関連情報