WebRTC y Websockets. Hay una diferencia

4 minutos de lectura

avatar de usuario
andresmclagan

Supongo que WebRTC es una API que decodifica/codifica audio y video, aunque la comunicación entre el servidor y los clientes se realiza a través de conexiones web o algún otro protocolo de red. Estoy un poco confundido. ¿WebRTC tiene su propio protocolo de comunicaciones?

avatar de usuario
jose3736

Hay dos lados en WebRTC.

  1. API de JavaScript (getUserMedia) que permiten que una aplicación acceda al hardware de la cámara y el micrófono. Puede usar este acceso para simplemente mostrar la transmisión localmente (quizás aplicar efectos) o enviar la secuencia a través de la red. Podrías enviar los datos a tu servidor, o podrías usar…
  2. PeerConnectionuna API que permite a los navegadores establecer directo de igual a igual conexiones de enchufe. Puede establecer una conexión directamente con el navegador de otra persona e intercambiar datos directamente. Esto es muy útil para datos de gran ancho de banda como video, donde no desea que su servidor tenga que lidiar con la transmisión de grandes cantidades de datos.

Echa un vistazo a las demostraciones para ver ambas partes de WebRTC en acción.

Así que en pocas palabras:

  • Los WebSockets permiten la comunicación full-duplex entre un navegador y un servidor web.
  • WebRTC PeerConnection permite la comunicación full-duplex entre dos navegadores.

  • WOW… gracias por quizás la respuesta más concisa que podría esperar. * Entonces PeerConnection es una conexión P2P, ¿la fase de negociación requiere un servidor en la mezcla? ¿Se requiere un servidor para cualquiera de las API de PeerConnection?

    – Andrew McLagan

    5 de octubre de 2012 a las 5:07


  • ‘¿La fase de negociación requiere un servidor en la mezcla?’ Sí. WebRTC se implementó utilizando la arquitectura JSEP, lo que significa que el descubrimiento y la señalización de usuarios se realizan a través de un canal de comunicación independiente (por ejemplo, mediante WebSocket o XHR y la API DataChannel). Ver el apprtc.appspot.com ejemplo o (disculpas por la autopromoción) html5rocks.com/en/tutorials/webrtc/basics/#toc-señalización

    – Sam Duton

    12 de octubre de 2012 a las 9:18

  • @ josh3736 Cuando dice “socket directo de igual a igual” y “comunicación full-duplex”, ¿significa que alguien creó una solución confiable, ordenada por paquetes y verificada por errores además del protocolo UDP para la comunicación P2P (no TCP , pero algo así)? Tengo la impresión de que WebRTC no admite conexiones P2P TCP.

    – Landon Poch

    22 de agosto de 2014 a las 18:25

  • peerConnection se puede utilizar sin un navegador. Hay API nativas para iOS y Android (y x86, creo). Además, el audio y el video no es lo único que hace webrtc, también puede abrir un canal de datos para enviar archivos entre pares, entre otros usos creativos.

    –Kevin

    26 de agosto de 2014 a las 5:47

WebRTC usa RTP (un protocolo basado en UDP) para el transporte de medios, pero requiere un canal de señalización fuera de banda para configurar la comunicación. Una opción para el canal de señalización es WebSocket.

avatar de usuario
3er Edén

En vez de peerConnection también puede ver el borrador del canal de datos WebRTC: https://datatracker.ietf.org/doc/html/draft-jesup-rtcweb-data-protocol-00 que es básicamente UDP bidireccional. Lo cual puede ser una alternativa realmente valiosa a WebSockets ya que no tiene los lados “negativos” de una conexión tcp.

  • ¿Esto está implementado por cualquier navegador? ¿Hay un ejemplo?

    – aplicaciones que importan

    12 de octubre de 2012 a las 9:42

  • @jjoe64 peerConnection ya está implementado en Chrome y FireFox Ejemplo aquí: mozilla.github.com/webrtc-landing

    – gogasca

    21 de noviembre de 2012 a las 9:59


  • necesita una conexión entre el navegador y el servidor (node.js). no p2p

    – aplicaciones que importan

    22 de noviembre de 2012 a las 8:11

  • Para establecer una conexión entre pares, primero ambos pares deben “encontrarse” entre sí. Esto se hace a través de una señalización y, opcionalmente, a través de un servidor de aturdimiento/giro.

    –Kevin

    26 de agosto de 2014 a las 5:50

No, la señalización no está definida por WebRTC.

Aquí hay una publicación del IETF que explica bastante bien por qué no lo es:
http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html

Esto significa que eres libre de elegir cómo intercambias la información de la red. Es decir, podría usar websockets, HTTP e incluso correo electrónico, pero eso sería un poco complicado 🙂

¿Ha sido útil esta solución?