Spec-Zone.ru › Web APIs

RTCPeerConnection

Базовая Широко доступная *

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

* Некоторые части этой функции могут иметь различный уровень поддержки.

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

Интерфейс RTCPeerConnection представляет собой подключение WebRTC между локальным компьютером и удалённым узлом. Он предоставляет методы для подключения к удалённому узлу, поддержания и мониторинга подключения, а также закрытия подключения, когда оно больше не требуется.

EventTarget RTCPeerConnection

Конструктор

RTCPeerConnection()

Возвращает новый RTCPeerConnection, представляющий собой соединение между локальным устройством и удалённым узлом.

Свойства экземпляра

Также наследует свойства от EventTarget.

canTrickleIceCandidates Только для чтения

Возвращает значение boolean, указывающее, может ли удалённый узел принимать каскадные ICE-кандидаты.

connectionState Только для чтения

Указывает текущее состояние подключения peer, возвращая одну из строк: new, connecting, connected, disconnected, failed, или closed.

currentLocalDescription Только для чтения

Возвращает объект RTCSessionDescription, описывающий локальный конец соединения, как он был последним успешно согласован с момента последнего завершения переговоров и подключения к удалённому узлу этим RTCPeerConnection. Также включает список любых ICE-кандидатов, которые могли быть сгенерированы агентом ICE с момента первоначальной инициализации предложения или ответа, представленных описанием.

currentRemoteDescription Только для чтения

Возвращает объект RTCSessionDescription, описывающий удалённый конец соединения, как он был последним успешно согласован с момента последнего завершения переговоров и подключения к удалённому узлу этим RTCPeerConnection. Также включает список любых ICE-кандидатов, которые могли быть сгенерированы агентом ICE с момента первоначальной инициализации предложения или ответа, представленных описанием.

iceConnectionState Только для чтения

Возвращает строку, которая описывает состояние агента ICE, связанного с этим RTCPeerConnection. Она может иметь следующие значения: new, checking, connected, completed, failed, disconnected, или closed.

iceGatheringState Только для чтения

Возвращает строку, описывающую состояние сбора ICE-кандидатов подключения. Это позволяет, например, определить, когда завершился сбор ICE-кандидатов. Возможные значения: new, gathering, или complete.

localDescription Только для чтения

Возвращает RTCSessionDescription, описывающий сеанс для локального конца соединения. Если он ещё не установлен, возвращает null.

peerIdentity Только для чтения

Возвращает Promise, который разрешается в RTCIdentityAssertion, содержащую строку, идентифицирующую удалённый узел. После успешного разрешения этой промисы, полученная идентичность является идентичностью целевого узла и не будет изменяться на протяжении всего подключения.

pendingLocalDescription Только для чтения

Возвращает объект RTCSessionDescription, описывающий ожидаемое изменение конфигурации для локального конца соединения. Это не описывает соединение в текущем состоянии, а то, каким оно может быть в ближайшем будущем.

pendingRemoteDescription Только для чтения

Возвращает объект RTCSessionDescription, описывающий ожидаемое изменение конфигурации для удалённого конца соединения. Это не описывает соединение в текущем состоянии, а то, каким оно может быть в ближайшем будущем.

remoteDescription Только для чтения

Возвращает объект RTCSessionDescription, описывающий сеанс, включая конфигурацию и информацию о медиа, для удалённого конца соединения. Если он ещё не задан, возвращает null.

sctp Только для чтения

Возвращает объект RTCSctpTransport, описывающий транспортный уровень SCTP, по которому отправляются и принимаются данные SCTP. Если SCTP не был согласован, это значение равно null.

signalingState Только для чтения

Возвращает строку, описывающую состояние процесса сигнализации на локальном конце подключения во время подключения или повторного подключения к другому узлу. Это одно из следующих значений: stable, have-local-offer, have-remote-offer, have-local-pranswer, have-remote-pranswer, или closed.

Статические методы

RTCPeerConnection.generateCertificate()

Создаёт сертификат X.509 и соответствующий ему закрытый ключ, возвращая Promise, который разрешается с новым RTCCertificate после его генерации.

Методы экземпляра

Также наследует методы от EventTarget.

addIceCandidate()

Добавляет новый удалённый кандидат в удалённое описание RTCPeerConnection, которое описывает состояние удалённого конца соединения.

addTrack()

Добавляет новый MediaStreamTrack в набор потоков, которые будут переданы другому участнику.

addTransceiver()

Создаёт новый RTCRtpTransceiver и добавляет его в набор трансиверов, связанных с соединением. Каждый трансивер представляет двунаправленный поток, с соответствующим RTCRtpSender и RTCRtpReceiver.

close()

Закрывает текущее соединение с удалённым участником.

createAnswer()

Инициализирует создание ответа SDP на полученное предложение от удалённого участника во время переговоров предложение/ответ в соединении WebRTC. Ответ содержит информацию о любых медиа, уже присоединённых к сессии, кодеках и опциях, поддерживаемых браузером, и любых ICE кандидатах, уже собранных.

createDataChannel()

Инициализирует создание нового канала, связанного с удалённым участником, по которому может передаваться любой тип данных. Это может быть полезно для сторонней информации, такой как изображения, передача файлов, текстовый чат, пакеты обновлений игры и так далее.

createOffer()

Инициализирует создание предложения SDP для начала нового соединения WebRTC с удалённым участником. Предложение SDP включает информацию о любых MediaStreamTrack объектах, уже подключенных к сессии WebRTC, кодеках и опциях, поддерживаемых браузером, а также о любых кандидатах, уже собранных агентом ICE для отправки по каналу сигнализации потенциальному участнику для запроса подключения или для обновления конфигурации существующего соединения.

getConfiguration()

Возвращает объект, который указывает текущую конфигурацию соединения.

getIdentityAssertion()

Инициализирует сбор утверждения идентичности и возвращает Promise, который разрешается в утверждение идентичности, закодированное как строка. Это оказывает влияние только в том случае, если signalingState не closed.

getReceivers()

Возвращает массив объектов RTCRtpReceiver, каждый из которых представляет один приёмник RTP.

getSenders()

Возвращает массив объектов RTCRtpSender, каждый из которых представляет отправителя RTP, ответственного за передачу данных одного потока.

getStats()

Возвращает Promise, который разрешается данными, предоставляющими статистику либо по всему соединению, либо по указанному MediaStreamTrack.

getTransceivers()

Возвращает список всех объектов RTCRtpTransceiver, используемых для отправки и получения данных по соединению.

removeTrack()

Указывает локальному концу соединения прекратить отправку медиа из указанного потока, не удаляя фактически соответствующий RTCRtpSender из списка отправителей, как показано в getSenders(). Если поток уже остановлен или не входит в список отправителей соединения, этот метод не оказывает влияния.

restartIce()

Позволяет легко запросить повторный сбор ICE кандидатов на обоих концах соединения. Это упрощает процесс, позволяя одному и тому же методу быть использованным как вызывающей стороной, так и стороной, принимающей вызов, для запуска перезапуска ICE.

setConfiguration()

Устанавливает текущую конфигурацию соединения на основе значений, включённых в указанный объект. Это позволяет изменять ICE серверы, используемые соединением, и политики транспортировки.

setIdentityProvider()

Устанавливает поставщика идентификации (IdP) в тройку, заданную в параметре: его имя, протокол, используемый для связи с ним, и имя пользователя. Протокол и имя пользователя являются необязательными.

setLocalDescription()

Изменяет локальное описание, связанное с соединением. Это описание определяет свойства локального конца соединения, включая формат медиа. Возвращает Promise, который выполняется после асинхронного изменения описания.

setRemoteDescription()

Устанавливает указанное описание сессии как текущее предложение или ответ удалённого участника. Описание определяет свойства удалённого конца соединения, включая формат медиа. Возвращает Promise, который выполняется после асинхронного изменения описания.

Методы, устаревшие

addStream() Устаревший Нестандартный

Добавляет MediaStream как локальный источник аудио или видео. Вместо использования этого устаревшего метода, используйте addTrack() для каждого потока, который вы хотите отправить удалённому участнику.

createDTMFSender() Устаревший Нестандартный

Создаёт новый RTCDTMFSender, связанный с конкретным MediaStreamTrack, который сможет отправлять DTMF сигналы по соединению.

removeStream() Устаревший Нестандартный

Удаляет MediaStream как локальный источник аудио или видео. Вместо этого используйте removeTrack().

События

Прослушивайте эти события с помощью addEventListener() или назначив обработчик событий к свойству oneventname этого интерфейса.

connectionstatechange

Отправляется, когда изменяется общий статус подключения к RTCPeerConnection.

datachannel

Отправляется, когда удалённый участник добавляет RTCDataChannel к подключению.

icecandidate

Отправляется для запроса передачи указанного кандидата удалённому участнику.

icecandidateerror

Отправляется в подключение, если во время сбора кандидатов ICE произошла ошибка. Событие описывает ошибку.

iceconnectionstatechange

Отправляется, когда изменяется состояние подключения ICE, например, при отключении.

icegatheringstatechange

Отправляется, когда изменяется состояние сбора ICE слоя, отражённое в iceGatheringState. Это указывает, началась ли ICE-независимая проверка (new), началось ли собирание кандидатов (gathering) или процесс завершён (complete).

negotiationneeded

Отправляется, когда требуется выполнить согласование или повторное согласование подключения ICE; это может произойти как при первом открытии подключения, так и при необходимости адаптации к изменяющимся сетевым условиям. Получатель должен ответить, создав предложение и отправив его другому участнику.

signalingstatechange

Отправляется, когда изменяется состояние сигнализации ICE подключения.

track

Отправляется после добавления нового трека в один из RTCRtpReceiver экземпляров, составляющих подключение.

Устаревшие события

addstream Устаревшее Нестандартное

Отправляется, когда к подключению добавлен новый MediaStream. Вместо прослушивания этого устаревшего события, следует прослушивать события track; одно событие отправляется для каждого MediaStreamTrack добавленного к подключению.

removestream Устаревшее Нестандартное

Отправляется, когда MediaStream удаляется из подключения. Вместо прослушивания этого устаревшего события, следует прослушивать события removetrack на каждом потоке.

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

Спецификация
WebRTC: Реальное общение в браузерах
# interface-definition

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
RTCPeerConnection
56До Chrome 63, значением параметра configuration.rtcpMuxPolicy по умолчанию было "negotiate" вместо "required".
23
1515 4422
43До Opera 50, значением параметра configuration.rtcpMuxPolicy по умолчанию было "negotiate" вместо "required".
15
11
56До Chrome Android 63, значением параметра configuration.rtcpMuxPolicy по умолчанию было "negotiate" вместо "required".
25
4424
43До Opera Android 46, значением параметра configuration.rtcpMuxPolicy по умолчанию было "negotiate" вместо "required".
14
11
6.0До Samsung Internet 8.0, значением параметра configuration.rtcpMuxPolicy по умолчанию было "negotiate" вместо "required".
1.5
56До WebView Android 63, значением параметра configuration.rtcpMuxPolicy по умолчанию было "negotiate" вместо "required".
4.4
RTCPeerConnection 5623 1515 4422 4315 11 5625 4424 4314 11 6.01.5 564.4
addIceCandidate 24 15
22Начиная с Firefox 68, параметр candidate является необязательным при вызове addIceCandidate(). Значение null для candidate указывает на то, что больше кандидатов отправляться не будет, а пустая строка candidate указывает, что больше кандидатов отправляться не будет для текущего поколения кандидатов.
15 11 25
24Начиная с Firefox 68, параметр candidate является необязательным при вызове addIceCandidate(). Значение null для candidate указывает на то, что больше кандидатов отправляться не будет, а пустая строка candidate указывает, что больше кандидатов отправляться не будет для текущего поколения кандидатов.
14 11 1.5 4.4
addStream 24 15 22 15 11–12 25 24 14 11–12 1.5 ≤37
addTrack 64 79 22 51 11 64 24 47 11 9.0 64
addTransceiver 69 79 59 56 11 69 59 48 11 10.0 69
addstream_event 24 15 22 15 Нет 25 24 14 Нет 1.5 ≤37
canTrickleIceCandidates 83 8315–79 47 69 15.4 83 47 59 15.4 13.0 83
close 23 15 22 15 11 25 24 14 11 1.5 4.4
connectionState 72 79 113 60 11 72 113 51 11 11.0 72
connectionstatechange_event 72 79 113 60 11 72 113 51 11 11.0 72
createAnswer 24 15 22 15 11 25 24 14 11 1.5 4.4
createDTMFSender 27 79 Нет 15 Нет 27 Нет 15 Нет 1.5 4.4
createDataChannel 24 79 22 15 11 25 24 14 11 1.5 4.4
createOffer 24 15 22 15 11 25 24 14 11 1.5 4.4
currentLocalDescription 70 79 22 57 11 70 24 49 11 10.0 70
currentRemoteDescription 70 79 57 57 11 70 57 49 11 10.0 70
datachannel_event 25 79 22 15 11 25 24 14 11 1.5 4.4
generateCertificate_static 48 79 22 35 12.1 48 24 35 12.2 6.0 48
getConfiguration 70 15 22 57 11 70 24 49 11 10.0 70
getIdentityAssertion Нет ≤18–79 40 Нет Нет Нет 40 Нет Нет Нет Нет
getLocalStreams 27 15 24 15 11–12 27 24 15 11–12 1.5 ≤37
getReceivers 59 79 34 46 11 59 34 43 11 6.0 59
getRemoteStreams 27 15 24 15 11–12 27 24 15 11–12 1.5 ≤37
getSenders 64 79 34 51 11 64 34 47 11 6.0 64
getStats 24 15 27 15 11 25 27 14 11 1.5 4.4
getTransceivers 69 79 59 56 11 69 59 48 11 10.0 79
iceConnectionState 26 15 24 15 11 26 24 14 11 1.5 4.4
iceGatheringState 25 15 22 15 11 25 24 14 11 1.5 4.4
icecandidate_event 24 15 22 15 11 25 24 14 11 1.5 4.4
icecandidateerror_event 77 79 Нет 64 14.1 77 Нет 55 14.5 12.0 77
iceconnectionstatechange_event 28 15 24 15 11 28 24 15 11 1.5 4.4
icegatheringstatechange_event 59 15 22 46 11 59 24 43 11 7.0 59
idpLoginUrl Нет Нет 40 Нет Нет Нет 40 Нет Нет Нет Нет
localDescription 24 15 22 15 11 25 24 14 11 1.5 4.4
negotiationneeded_event 24 15 38
24–38Хотя свойство onnegotiationneeded поддерживается, событие negotiationneeded никогда не срабатывает.
15 11 25 38
24–38Хотя свойство onnegotiationneeded поддерживается, событие negotiationneeded никогда не срабатывает.
14 11 1.5 4.4
peerIdentity Нет ≤18–79 40 Нет Нет Нет 40 Нет Нет Нет Нет
pendingLocalDescription 70 79 22 57 11 70 24 49 11 10.0 70
pendingRemoteDescription 70 79 22 57 11 70 24 49 11 10.0 70
remoteDescription 24 15 22 15 11 25 24 14 11 1.5 4.4
removeStream 24 15 22–51 15 11–12 25 24–51 14 11–12 1.5 ≤37
removeTrack 64 79 22 51 11 64 24 47 11 6.0 64
removestream_event 24 15 22–60 15 Нет 25 24–60 14 Нет 1.5 ≤37
restartIce 77 79 70 64 14.1 77 79 55 14.5 12.0 77
sctp 76 79 113 63 15.4 76 113 54 15.4 12.0 76
setConfiguration 48 79 99 35 11 48 99 35 11 6.0 48
setIdentityProvider Нет ≤18–79 40 Нет Нет Нет 40 Нет Нет Нет Нет
setLocalDescription 24 15
22Firefox не поддерживает описания типа pranswer.
15 11 25
24Firefox не поддерживает описания типа pranswer.
14 11 1.5 4.4
setRemoteDescription 24 15 22 15 11 25 24 14 11 1.5 4.4
signalingState 26 15 24 15 11 26 24 14 11 1.5 4.4
signalingstatechange_event 28 15 36
24–36Несмотря на поддержку свойства onsignalingstatechange, событие signalingstatechange не генерируется как объект Event. См. ошибку 1075133.
15 11 28 36
24–36Несмотря на поддержку свойства onsignalingstatechange, событие signalingstatechange не генерируется как объект Event. См. ошибку 1075133.
15 11 1.5 4.4
track_event 64 79 22 43 11 64 24 43 11 6.0 64

См. также

  • https://github.com/jesup/nightly-gupshup/blob/master/static/js/chat.js
  • Начало работы с WebRTC
  • TutorRoom: приложение для обмена видео и файлами по технологии peer-to-peer и захвата видео с помощью Node.js HTML (исходный код на GitHub)

© 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

Spec-Zone.ru

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