WebRTC ( Web Real-Time Communication ) es un proyecto gratuito de código abierto que proporciona navegadores web y aplicaciones móviles con comunicación en tiempo real (RTC) a través de simples interfaces de programación de aplicaciones (API). Permite que la comunicación de audio y video funcione dentro de las páginas web al permitir la comunicación directa entre pares , eliminando la necesidad de instalar complementos o descargar aplicaciones nativas. [3] Compatible con Apple , Google , Microsoft , Mozilla y Opera, Las especificaciones de WebRTC han sido publicadas por el Consorcio World Wide Web (W3C) y el Grupo de Trabajo de Ingeniería de Internet (IETF). [4] [5]
Autor (es) original (es) | Justin Uberti Peter Thatcher |
---|---|
Versión inicial | 2011 |
Lanzamiento estable | 1.0 [1] / 4 de mayo de 2018 |
Repositorio | webrtc |
Escrito en | C ++ , [2] JavaScript |
Licencia | Licencia BSD |
Sitio web | webrtc |
Según el sitio web webrtc.org, el propósito del proyecto es " permitir que se desarrollen aplicaciones RTC ricas y de alta calidad para el navegador, las plataformas móviles y los dispositivos IoT , y permitir que todos se comuniquen a través de un conjunto común de protocolos ". [6]
Historia
En mayo de 2010, Google compró Global IP Solutions o GIPS, una empresa de software de videoconferencia y VoIP que había desarrollado muchos componentes necesarios para RTC, como códecs y técnicas de cancelación de eco. Google abrió la tecnología GIPS y se comprometió con los organismos de estándares relevantes en IETF y W3C para garantizar el consenso de la industria. [7] [8] En mayo de 2011, Google lanzó un proyecto de código abierto para la comunicación en tiempo real basada en navegador conocido como WebRTC. [9] Esto ha sido seguido por un trabajo en curso para estandarizar los protocolos relevantes en el IETF [10] y las API de navegador en el W3C. [11]
En enero de 2011, Ericsson Labs creó la primera implementación de WebRTC utilizando una biblioteca WebKit modificada . [12] [13] En octubre de 2011, el W3C publicó su primer borrador de la especificación. [14] Los hitos de WebRTC incluyen la primera videollamada entre navegadores (febrero de 2013), las primeras transferencias de datos entre navegadores (febrero de 2014) y, a partir de julio de 2014, Google Hangouts era "una especie de" uso de WebRTC. [15]
El borrador de la API del W3C se basó en el trabajo preliminar realizado en el WHATWG . [16] Se la conoció como API ConnectionPeer, y en Ericsson Labs se creó un concepto de implementación previa a los estándares . [12] El Grupo de trabajo de WebRTC espera que esta especificación evolucione significativamente en función de:
- Resultados de los intercambios en curso en el grupo complementario RTCWEB en IETF [17] para definir el conjunto de protocolos que, junto con este documento, definen las comunicaciones en tiempo real en los navegadores web. Si bien no se exige un protocolo de señalización único, SIP sobre WebSockets ( RFC 7118 ) a menudo se usa parcialmente debido a la aplicabilidad de SIP a la mayoría de los escenarios de comunicación previstos, así como a la disponibilidad de software de código abierto como JsSIP .
- Problemas de privacidad que surgen al exponer las capacidades locales y las transmisiones locales
- Discusiones técnicas dentro del grupo, sobre la implementación de canales de datos en particular [18]
- Experiencia obtenida a través de la experimentación temprana
- Comentarios de otros grupos e individuos
En noviembre de 2017, la especificación WebRTC 1.0 pasó de Borrador de trabajo a Recomendación candidata. [19]
En enero de 2021, la especificación WebRTC 1.0 pasó de Recomendación Candidata a Recomendación . [4]
Descripción general
Diseño
Los componentes principales de WebRTC incluyen varias API de JavaScript :
getUserMedia
adquiere los medios de audio y video (por ejemplo, accediendo a la cámara y al micrófono de un dispositivo). [20]RTCPeerConnection
permite la comunicación de audio y video entre pares. Realiza procesamiento de señales , manejo de códecs , comunicación entre pares, seguridad y administración de ancho de banda . [21]RTCDataChannel
permite la comunicación bidireccional de datos arbitrarios entre pares. Utiliza la misma API que WebSockets y tiene una latencia muy baja . [22]
La API de WebRTC también incluye una función de estadísticas:
getStats
permite que la aplicación web recupere un conjunto de estadísticas sobre las sesiones de WebRTC. Estos datos estadísticos se describen en un documento W3C separado. [23]
La API de WebRTC no incluye disposiciones para la señalización , es decir, descubrir pares a los que conectarse y determinar cómo establecer conexiones entre ellos. Las aplicaciones utilizan el establecimiento de conectividad interactiva para las conexiones y de alguna manera administran las sesiones, posiblemente basándose en cualquiera de los protocolos de inicio de sesión , mensajería extensible y protocolo de presencia , transporte de telemetría de cola de mensajes , matriz (protocolo) u otro protocolo. La señalización puede depender de uno o más servidores. [24] [25]
RFC 7874 requiere implementaciones para proporcionar PCMA / PCMU ( RFC 3551 ), Evento telefónico como DTMF ( RFC 4733 ) y Opus ( RFC 6716 ) códecs de audio como capacidades mínimas. Las API del navegador de captura de medios, canal de datos y PeerConnection se detallan en el W3C.
W3C está desarrollando ORTC (Object Real-Time Communications) para WebRTC. [26]
Ejemplos de
Aunque inicialmente se desarrolló para navegadores web, WebRTC tiene aplicaciones para dispositivos que no son navegadores, incluidas plataformas móviles y dispositivos IoT . Los ejemplos incluyen la telefonía VoIP basada en navegador , también llamada teléfonos en la nube o teléfonos web, que permiten realizar y recibir llamadas desde un navegador web, reemplazando el requisito de descargar e instalar un softphone. [27]
Apoyo
WebRTC es compatible con los siguientes navegadores:
- Computadora de escritorio
- Microsoft Edge 12+ [28]
- Google Chrome 28+
- Mozilla Firefox 22+ [29]
- Safari 11 o superior [30]
- Opera 18+ [31]
- Vivaldi 1.9+
- Bravo
- Androide
- Google Chrome 28+ (habilitado de forma predeterminada desde 29)
- Mozilla Firefox 24+ [32]
- Opera Mobile 12+
- Sistema operativo Chrome
- Firefox OS
- BlackBerry 10
- iOS
- MobileSafari / WebKit ( iOS 11 +)
- Tizen 3.0
GStreamer proporciona directamente una implementación WebRTC gratuita. [33]
Preocupaciones
En enero de 2015, TorrentFreak informó una falla de seguridad grave en los navegadores que admiten WebRTC, diciendo que comprometía la seguridad de los túneles VPN al exponer la verdadera dirección IP de un usuario. [34] Las solicitudes de lectura de la dirección IP no son visibles en la consola del desarrollador del navegador, y no están bloqueadas por la mayoría de los complementos de bloqueo de anuncios / privacidad / seguridad , lo que permite el seguimiento en línea por parte de los anunciantes y otras entidades a pesar de las precauciones [35] (sin embargo, el El complemento uBlock Origin puede solucionar este problema). A partir de septiembre de 2019, esta falla de WebRTC todavía aparece en Firefox 69.xy aún expone de forma predeterminada la dirección IP interna del usuario a la web. [36]
Ver también
- Soluciones IP globales (GIPS)
- Protocolo de transporte en tiempo real (RTP)
- Protocolo de descripción de sesión (SDP)
- Puerta de enlace WebRTC
Referencias
- ^ "WebRTC 1.0: comunicación en tiempo real entre navegadores" . Consorcio World Wide Web . 27 de septiembre de 2018 . Consultado el 25 de marzo de 2019 .
- ^ "Src / webrtc - Git en Google" .
- ^ Cómo WebRTC está revolucionando la telefonía . Blogs.trilogy-lte.com (21 de febrero de 2014). Consultado el 11 de abril de 2014.
- ^ a b "Web Real-Time Communications (WebRTC) transforma el panorama de las comunicaciones al convertirse en un estándar de recomendación del World Wide Web Consortium (W3C) y del Grupo de trabajo de ingeniería de Internet (IETF)" . Consorcio World Wide Web . 26 de enero de 2021 . Consultado el 27 de enero de 2021 .
- ^ "Páginas de estado de Rtcweb" . tools.ietf.org . Consultado el 18 de febrero de 2021 .
- ^ "WebRTC" . WebRTC . Archivado desde el original el 9 de enero de 2018 . Consultado el 6 de febrero de 2018 .
- ^ "¿Son los componentes WebRTC de la adquisición de Soluciones IP globales por parte de Google?" . WebRTC . Consultado el 6 de febrero de 2018 .
- ^ Wauters, Robin (18 de mayo de 2010). "Google hace una oferta en efectivo de 68,2 millones de dólares para Global IP Solutions" . TechCrunch . Consultado el 6 de febrero de 2018 .
- ^ Harald Alvestrand (31 de mayo de 2011). "Lanzamiento de Google del código fuente de WebRTC" . [email protected] . Consultado el 12 de septiembre de 2012 .
- ^ Carta de la comunicación en tiempo real en el grupo de trabajo de navegadores WEB (rtcweb)
- ^ "WebRTC 1.0: comunicación en tiempo real entre navegadores" . W3.org . Consultado el 12 de septiembre de 2012 .
- ^ a b "Más allá de HTML5: video conversacional entre pares" . Blog de investigación de Ericsson . Labs.ericsson.com. 25 de enero de 2011. Archivado desde el original el 25 de febrero de 2017 . Consultado el 21 de marzo de 2021 .
- ^ Stefan Håkansson; Stefan Ålund (26 de mayo de 2011). "Más allá de HTML5: Experimente con la comunicación en tiempo real en un navegador" . Blog de investigación de Ericsson . Consultado el 6 de febrero de 2018 .
- ^ "WebRTC 1.0: comunicación en tiempo real entre navegadores (borrador de trabajo del W3C 27 de octubre de 2011)" . Consorcio World Wide Web . 27 de octubre de 2011 . Consultado el 6 de febrero de 2018 .
- ^ Nowak, Szymon. "WebRTC: mucho más que videoconferencia" . GitHub . Consultado el 6 de febrero de 2018 .
- ^ "Introducción - Estándar HTML" . Whatwg.org . Consultado el 12 de septiembre de 2012 .
- ^ "Páginas de estado de Rtcweb" . Tools.ietf.org . Consultado el 12 de septiembre de 2012 .
- ^ "draft-jesup-rtcweb-data-protocol-00 - Protocolo de canal de datos WebRTC" . Tools.ietf.org . Consultado el 12 de septiembre de 2012 .
- ^ "WebRTC 1.0: comunicación en tiempo real entre navegadores (recomendación del candidato del W3C 02 de noviembre de 2017)" . 2 de noviembre de 2017.
- ^ "Captura de medios y transmisiones: getUserMedia" . W3C. 2013-09-03 . Consultado el 15 de enero de 2014 .
- ^ "WebRTC: interfaz RTCPeerConnection" . W3C. 2013-09-10 . Consultado el 15 de enero de 2014 .
- ^ "WebRTC: RTCDataChannel" . W3C. 2013-09-10 . Consultado el 15 de enero de 2014 .
- ^ "Identificadores para la API de estadísticas de WebRTC" . W3C. 2014-09-29.
- ^ Tsahi Levent-Levi (13 de abril de 2020). "Servidor WebRTC: ¿Qué es exactamente?" . BlogGeek.me .
- ^ Tsahi Levent-Levi (13 de noviembre de 2014). "Matrix.org y WebRTC: una entrevista con Matthew Hodgson" . BlogGeek.me .
- ^ "Grupo de comunidad W3C ORTC (comunicaciones de objetos en tiempo real)" .
- ^ "Atrapa al Babelfish: la compañía de telecomunicaciones irlandesa diseña un nuevo tipo de teléfono en la nube" . Noviembre de 2017.
- ^ "La API de ORTC ahora está disponible en Microsoft Edge" . Microsoft. 2015-09-18.
- ^ Notas de Firefox: escritorio . Mozilla.org (25 de junio de 2013). Consultado el 11 de abril de 2014.
- ^ "Safari 11.0" . Apple . Consultado el 6 de junio de 2017 .
- ^ Opera News . blogs.opera.com (19 de noviembre de 2013). Consultado el 17 de septiembre de 2015.
- ^ Notas de Firefox: escritorio . Mozilla.org (17 de septiembre de 2013). Consultado el 4 de agosto de 2014.
- ^ "Notas de la versión de GStreamer 1.14" . gstreamer.freedesktop.org . Consultado el 19 de diciembre de 2019 . desde la versión 1.14
- ^ Gran falla de seguridad filtra las direcciones IP reales de los usuarios de VPN TorrentFreak.com (30 de enero de 2015). Consultado el 21 de febrero de 2015.
- ^ Solicitudes de dirección IP STUN para WebRTC recuperadas el 21 de febrero de 2015.
- ^ Raymond Hill (26 de marzo de 2016). "Evite que WebRTC filtre la dirección IP local" . Documentación de uBlock Origin . Consultado el 1 de septiembre de 2016 .
Otras lecturas
- Proust, S., ed. (Mayo de 2016). Códecs de audio WebRTC adicionales para la interoperabilidad . IETF . doi : 10.17487 / RFC7875 . RFC 7875 . Consultado el 12 de octubre de 2016 .
- Valin, JM; Bran, C. (mayo de 2016). Requisitos de procesamiento y códec de audio WebRTC . IETF . doi : 10.17487 / RFC7874 . RFC 7874 . Consultado el 12 de octubre de 2016 .
- Roach, AB (marzo de 2016). Procesamiento de video WebRTC y requisitos de códec . IETF . doi : 10.17487 / RFC7742 . RFC 7742 . Consultado el 12 de octubre de 2016 .
- Perumal, M .; Wing, D .; Ravindranath, R .; Reddy, T .; Thomson, M. (octubre de 2015). Utilidades de recorrido de sesión para el uso de NAT (STUN) para la frescura del consentimiento . IETF . doi : 10.17487 / RFC7675 . RFC 7675 . Consultado el 12 de octubre de 2016 .
- Holmberg, C .; Hakansson, S .; Eriksson, G. (marzo de 2015). Casos de uso y requisitos de comunicación web en tiempo real . IETF . doi : 10.17487 / RFC7478 . RFC 7478 . Consultado el 12 de octubre de 2016 .
enlaces externos
- Página web oficial
- Grupo de trabajo de comunicaciones web en tiempo real del W3C
- IETF Real-Time Communication in WEB-browsers (rtcweb) Grupo de trabajo
- Aplicación de demostración de video chat basada en WebRTC
- libdatachannel, implementación independiente de código abierto de WebRTC