RTCDataChannel
Базовая Широко доступна *
Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Интерфейс RTCDataChannel представляет собой сетевой канал, который можно использовать для двусторонней передачи произвольных данных между узлами. Каждый канал данных связан с RTCPeerConnection, и каждое подключение к узлу может иметь до теоретического максимума 65 534 каналов данных (фактический предел может отличаться от браузера к браузеру).
Чтобы создать канал данных и попросить удалённый узел присоединиться к вам, вызовите метод RTCPeerConnection createDataChannel(). Узел, приглашённый к обмену данными, получит событие datachannel (с типом RTCDataChannelEvent), чтобы узнать, что канал данных добавлен к подключению.
RTCDataChannel — это передаваемый объект.
Свойства экземпляра
Также наследует свойства от EventTarget.
binaryType-
Строка, определяющая тип объекта, который должен использоваться для представления двоичных данных, полученных по
RTCDataChannel. Значения совпадают с разрешёнными для свойстваWebSocket.binaryType:blobпри использовании объектовBlobилиarraybufferпри использовании объектовArrayBuffer. По умолчаниюarraybuffer. -
bufferedAmountТолько для чтения -
Возвращает количество байтов данных, в настоящее время находящихся в очереди для отправки по каналу данных.
bufferedAmountLowThreshold-
Указывает количество байтов буферизованных исходящих данных, которые считаются «низкими». Значение по умолчанию — 0.
-
idТолько для чтения -
Возвращает идентификационный номер (от 0 до 65 534), уникально идентифицирующий
RTCDataChannel. -
labelТолько для чтения -
Возвращает строку, содержащую имя, описывающее канал данных. Эти метки не обязаны быть уникальными.
-
maxPacketLifeTimeТолько для чтения -
Возвращает количество времени в миллисекундах, которое браузеру разрешается тратить на попытку передачи сообщения, как задано при создании канала данных, или
null. -
maxRetransmitsТолько для чтения -
Возвращает максимальное количество попыток повторной передачи сообщения браузером до отказа, как задано при создании канала данных, или
null, что указывает на отсутствие максимального значения. -
negotiatedТолько для чтения -
Указывает, был ли обмен подключением канала данных (
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");
};
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
RTCDataChannel |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
binaryType |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
bufferedAmount |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
bufferedAmountLowThreshold |
46 | 79 | 44 | 33 | 11 | 46 | 44 | 33 | 11 | 5.0 | 46 |
bufferedamountlow_event |
57Значение по умолчанию дляrtcpMuxPolicy — require. |
79Значение по умолчанию дляrtcpMuxPolicy — require. |
44 | 44Значение по умолчанию дляrtcpMuxPolicy — require. |
11 | 57Значение по умолчанию дляrtcpMuxPolicy — require. |
44 | 43Значение по умолчанию дляrtcpMuxPolicy — require. |
11 | 7.0Значение по умолчанию дляrtcpMuxPolicy — require. |
57Значение по умолчанию дляrtcpMuxPolicy — require. |
close |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
close_event |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
closing_event |
81 | 81 | Нет | 68 | 15.4 | 81 | Нет | 58 | 15.4 | 13.0 | 81 |
error_event |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
id |
30 | 79 | 22 | 17 | 11 | 30 | 24 | 18 | 11 | 2.0 | 4.4 |
label |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
maxPacketLifeTime |
56 | 79 | 62 | 43 | 11 | 56 | 62 | 43 | 11 | 6.0 | 56 |
maxRetransmits |
30 | 79 | 62 | 17 | 11 | 30 | 62 | 18 | 11 | 2.0 | 4.4 |
message_event |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
negotiated |
30 | 79 | 68 | 17 | 11 | 30 | 68 | 18 | 11 | 2.0 | 4.4 |
open_event |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
ordered |
30 | 79 | 22 | 17 | 11 | 30 | 24 | 18 | 11 | 2.0 | 4.4 |
priority |
Нет | Нет | Нет | Нет | 15 | Нет | Нет | Нет | 15 | Нет | Нет |
protocol |
30 | 79 | 22 | 17 | 11 | 30 | 24 | 18 | 11 | 2.0 | 4.4 |
readyState |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
reliable |
24 | 79 | 22 | 15 | Нет | 25 | 24 | 14 | Нет | 1.5 | 4.4 |
sctp_sdp_21 |
58 | 79 | 63 | 45 | Нет | 58 | 63 | 43 | Нет | 7.0 | 58 |
send |
24 | 79 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
transferable |
130 | 130 | Нет | 115 | 15 | 130 | Нет | 86 | 15 | Нет | 130 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel