RTCDataChannel
Baseline 廣泛可用 *
RTCDataChannel 介面表示一個可以用於雙向點對點傳輸任意資料的網路通道。每個資料通道都與一個 RTCPeerConnection 相關聯,並且每個對等連線最多可以擁有理論上 65,534 個數據通道(實際限制可能因瀏覽器而異)。
要建立資料通道並邀請遠端對等方加入,請呼叫 RTCPeerConnection 的 createDataChannel() 方法。被邀請交換資料的對等方將收到一個 datachannel 事件(型別為 RTCDataChannelEvent),以告知它資料通道已新增到連線中。
RTCDataChannel 是一個 可轉移物件。
例項屬性
還繼承了 EventTarget 的屬性。
binaryType-
一個字串,指定在
RTCDataChannel上接收二進位制資料時應使用的物件型別。值與WebSocket.binaryType屬性允許的值相同:如果使用Blob物件,則為blob;如果使用ArrayBuffer物件,則為arraybuffer。預設值為arraybuffer。 bufferedAmount只讀-
返回當前排隊待透過資料通道傳送的資料位元組數。
bufferedAmountLowThreshold-
指定緩衝區中的出站資料量被視為“低”的位元組數。預設值為 0。
id只讀-
返回一個唯一標識
RTCDataChannel的 ID 號(介於 0 和 65,534 之間)。 label只讀-
返回一個包含描述資料通道的名稱的字串。這些標籤不要求唯一。
maxPacketLifeTime只讀-
返回瀏覽器在建立資料通道時允許嘗試傳輸訊息的時間(以毫秒為單位),或者為
null。 maxRetransmits只讀-
返回瀏覽器在放棄之前應嘗試重傳訊息的最大次數,或
null,表示沒有最大值。 negotiated只讀-
指示
RTCDataChannel的連線是由 Web 應用程式(true)還是由 WebRTC 層(false)協商的。預設值為false。 ordered只讀-
指示資料通道是否保證訊息的按順序傳遞;預設值為
true,表示資料通道確實是按順序的。 protocol只讀-
返回一個包含所使用的子協議名稱的字串。如果在建立資料通道時未指定協議,則此屬性的值為空字串(
"")。 readyState只讀-
返回一個字串,指示資料通道底層資料連線的狀態。它可以具有以下值之一:
connecting、open、closing或closed。
已廢棄的屬性
reliable只讀 已棄用 非標準-
指示資料通道是否是可靠的。
例項方法
還繼承了 EventTarget 的方法。
事件
bufferedamountlow-
當出站資料緩衝區中的資料位元組數低於
bufferedAmountLowThreshold指定的值時傳送。 close-
當底層資料傳輸關閉時傳送。
closing-
當底層資料傳輸即將開始關閉時傳送。
error-
當資料通道上發生錯誤時傳送。
message-
當從遠端對等方接收到訊息時傳送。訊息內容可在事件的
data屬性中找到。 open-
當資料通道首次開啟時,或當現有資料通道的底層連線重新開啟時傳送。
資料格式
底層資料格式由 IEEE 規範 SDP Offer/Answer Procedures for SCTP over DTLS Transport (RFC 8841) 定義。當前格式指定其協議為 "UDP/DTLS/SCTP"(UDP 承載 DTLS 承載 SCTP)或 "TCP/DTLS/SCTP"(TCP 承載 DTLS 承載 SCTP)。舊瀏覽器可能只指定 "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:瀏覽器中的即時通訊 # rtcdatachannel |
瀏覽器相容性
載入中…