RTCPeerConnection: метод createAnswer()
Базовая Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с января 2020 года.
Метод createAnswer() интерфейса RTCPeerConnection создает ответ SDP на предложение, полученное от удалённого узла во время обмена предложениями/ответами при установлении соединения WebRTC.
Ответ содержит информацию о любых уже подключённых к сессии медиа, кодеках и поддерживаемых браузером параметрах, а также любых уже собранных кандидатах ICE. Ответ передаётся в возвращённое значение Promise и затем должен быть отправлен источнику предложения для продолжения процесса переговоров.
Синтаксис
createAnswer() createAnswer(options) createAnswer(successCallback, failureCallback) // deprecated createAnswer(successCallback, failureCallback, options) // deprecated
Параметры
optionsНеобязательно-
Необязательный объект, предоставляющий параметры, запрошенные для ответа. В настоящее время доступных параметров нет.
Устаревшие параметры
В более старом коде и документации вы можете увидеть версию этого метода с обратными вызовами. Эта версия устарела и её использование настоятельно не рекомендуется. Вы должны обновить любой существующий код, чтобы использовать версию на основе Promise вместо createAnswer(). Параметры старой формы createAnswer() описаны ниже, чтобы помочь в обновлении существующего кода.
successCallbackУстарело-
Функция обратного вызова, которой будет передан единственный объект
RTCSessionDescription, описывающий только что созданный ответ. failureCallbackУстарело-
Функция обратного вызова, которой будет передан единственный объект
DOMException, объясняющий, почему запрос на создание ответа не удался. optionsНеобязательно-
Необязательный объект, предоставляющий параметры, запрошенные для ответа.
Исключения
NotReadableError-
Поставщик идентификации не смог предоставить утверждение об идентификации.
OperationError-
По какой-то причине сгенерировать SDP не удалось; это общее исключение для случаев сбоя.
Возвращаемое значение
А Promise, который выполняется с объектом, содержащим те же свойства, что и у объектов RTCSessionDescription:
Примеры
Вот фрагмент кода из статьи Сигнализация и видеозвонки. Этот код взят из обработчика сообщения, отправленного для передачи предложения другому узлу через канал сигнализации.
Примечание: Имейте в виду, что это часть процесса сигнализации, транспортный уровень которой – это деталь реализации, полностью зависящая от вас. В данном случае используется соединение WebSocket для отправки JSON-сообщения с полем type со значением "video-answer" другому узлу, несущего ответ устройству, которое отправило предложение для подключения. Содержание передаваемого в функцию sendToServer() объекта, наряду со всем остальным в обработчике выполнения обещания, полностью зависит от вашей разработки.
pc.createAnswer()
.then((answer) => pc.setLocalDescription(answer))
.then(() => {
// Send the answer to the remote peer through the signaling server.
})
.catch(handleGetUserMediaError);
Это запрос к RTCPeerConnection для создания и возврата нового ответа. В обработчике нашего обещания возвращённый ответ устанавливается как описание локального конца соединения путём вызова setLocalDescription().
После успешного выполнения ответ отправляется на сервер сигнализации с использованием выбранного вами протокола.
Для перехвата и обработки ошибок используется Promise.catch().
См. Обработка приглашения в нашем примере чата WebRTC, чтобы просмотреть весь код, из которого взят этот фрагмент; это поможет вам понять процесс сигнализации и работу ответов.
Спецификации
Совместимость с браузерами
| Десктоп | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createAnswer |
24 | 15 | 22 | 15 | 11 | 25 | 24 | 14 | 11 | 1.5 | 4.4 |
returns_promise |
51 | 79 | 37 | 43 | 11 | 51 | 37 | 43 | 11 | 6.0 | 51 |
© 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/RTCPeerConnection/createAnswer