Spec-Zone.ru › Web APIs

RTCDataChannel: метод send()

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Метод send() интерфейса RTCDataChannel отправляет данные по каналу связи удалённому участнику. Это можно сделать в любое время, кроме начального процесса создания канала транспорта. Данные, отправленные до подключения, буферизуются, если это возможно (или происходит ошибка, если это невозможно), а также буферизуются, если отправляются во время закрытия или закрытого соединения.

Примечание: Разные браузеры имеют различные ограничения на размер сообщения, которое вы можете отправить. Существуют спецификации для определения того, как автоматически фрагментировать большие сообщения, но не все браузеры их реализуют, а те, которые это делают, имеют различные дополнительные ограничения. Это станет менее сложным со временем, но пока, если у вас есть вопросы, см. Ограничения на размер сообщения.

Синтаксис

send(data)

Параметры

data

Данные для передачи по подключению. Это может быть строка, Blob, ArrayBuffer, TypedArray или DataView объект.

Возвращаемое значение

Ничего (undefined).

Исключения

InvalidStateError DOMException

Выбрасывается, когда канал данных не завершил установку собственного соединения (то есть его readyState является connecting). Канал данных должен установить собственное соединение, потому что он использует канал транспорта, отдельный от канала медиа-контента. Эта ошибка возникает без отправки или буферизации data.

NetworkError DOMException

Выбрасывается, когда указанные data должны быть буферизованы, а в буфере нет места. В этом случае основной транспорт сразу закрывается.

TypeError

Выбрасывается, если указанные data слишком велики для получения другим участником. Поскольку существует несколько методов разбиения больших данных на меньшие части для передачи, возможны ситуации, в которых другой участник не поддерживает те же методы. Например, если один участник — это современный браузер, поддерживающий использование флага EOR (конец записи) для указания того, что полученное сообщение является последней частью объекта, отправленного частями с использованием send(). Дополнительную информацию об ограничениях на размер сообщений см. в Ограничения на размер сообщений.

Примеры

В этом примере создается функция sendMessage(); она принимает объект в качестве входных данных и отправляет удалённому участнику через RTCDataChannel строку JSON с указанным объектом и отметкой времени.

const pc = new RTCPeerConnection();
const dc = pc.createDataChannel("BackChannel");

function sendMessage(msg) {
  const obj = {
    message: msg,
    timestamp: new Date(),
  };
  dc.send(JSON.stringify(obj));
}

Спецификации

Спецификация
WebRTC: Обмен реальным временем в браузерах
# dom-rtcdatachannel-send

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
send 24 79 22 15 11 25 24 14 11 1.5 4.4

См. также

  • WebRTC
  • RTCDataChannel
  • RTCDataChannel.readyState
  • close событие

© 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/send

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API