Подтвердить что ты не робот

WebRTC и Websockets. Есть ли разница

Я предполагаю, что WebRTC - это API, который декодирует/кодирует аудио и видео, хотя связь между сервером и клиентами выполняется через веб-сокеты или какой-либо другой сетевой протокол? Я немного смущен. У WebRTC есть собственный протокол связи?

4b9b3361

Ответ 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 и даже электронную почту, но это было бы битком:)