Я предполагаю, что WebRTC - это API, который декодирует/кодирует аудио и видео, хотя связь между сервером и клиентами выполняется через веб-сокеты или какой-либо другой сетевой протокол? Я немного смущен. У WebRTC есть собственный протокол связи?
WebRTC и Websockets. Есть ли разница
Ответ 1
В WebRTC есть две стороны.
- API JavaScript (
getUserMedia
), которые позволяют приложению получать доступ к аппаратам камеры и микрофона. Вы можете использовать этот доступ для простого отображения потока локально (возможно применения эффектов) или отправки потока по сети. Вы можете отправить данные на свой сервер или использовать... -
PeerConnection
, API, который позволяет браузерам устанавливать соединения сокета direct peer-to-peer. Вы можете напрямую установить соединение с другим браузером и обмениваться данными напрямую. Это очень полезно для данных с высокой пропускной способностью, таких как видео, где вы не хотите, чтобы ваш сервер имел дело с ретрансляцией больших объемов данных.
Посмотрите демо, чтобы увидеть обе части WebRTC в действии.
Итак, в двух словах:
- WebSockets обеспечивает полнодуплексную связь между браузером и веб-сервером.
- WebRTC
PeerConnection
обеспечивает полнодуплексную связь между двумя браузерами.
Ответ 2
WebRTC использует RTP (протокол на основе UDP) для транспорта мультимедиа, но для установления связи требуется канал внеполосной сигнализации. Одним из вариантов для канала сигнализации является WebSocket.
Ответ 3
Вместо peerConnection
вы также можете просмотреть черновик канала данных WebRTC: http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-00, который в основном двунаправленный udp. Это может быть действительно ценной альтернативой WebSockets, так как не имеет "отрицательных" сторон tcp-соединения.
Ответ 4
Нет, сигнализация не определяется WebRTC.
Вот сообщение от IETF, которое объясняет это довольно хорошо, почему это не так: http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html
Это означает, что вы можете свободно выбирать, как вы обмениваетесь сетевой информацией. То есть вы могли бы использовать websockets, HTTP и даже электронную почту, но это было бы битком:)