¿Qué es WebRTC y cómo funciona?
WebRTC ha revolucionado la forma en que nos comunicamos por Internet. Es una tecnología que seguramente estés usando en tu día a día, por lo que no está de más que entiendas un poco mejor cuáles son sus claves.
¿Qué es WebRTC?
WebRTC es un acrónimo de Web Real-Time Communication, una tecnología que sirve para realizar comunicaciones en tiempo real sin salirse del navegador. En realidad es un conjunto de estándares, APIs y protocolos que permiten que los navegadores expandan sus posibilidades, permitiendo la transmisión directa de audio, video y datos entre usuarios.
Consiste en un conjunto de tecnologías de código abierto, que soportan de manera nativa los navegadores. Está mantenido por comunidades de gestión de estándares como el W3C y la IETF.
Antes de WebRTC para hacer aplicaciones se necesitaba de plugins o programas de escritorio que permitieran esa posibilidad. Hoy, gracias a estándares abiertos, es posible hacerlo desde el navegador, sin necesidad de instalar nada en particular. Esto ha permitido la aparición de muchos servicios en la web, donde es posible realizar transmisiones e intercambiar datos en tiempo real.
¿Cómo funciona WebRTC?
WebRTC combina diversas tecnologías que están disponibles en todos los navegadores modernos. Gracias a ellas podemos lograr una conexión segura y rápida entre dos o más puntos. A continuación te vamos a explicar con palabras sencillas su funcionamiento para que puedas entender un poco mejor cómo se dan estos mecanismos.
Comunicación en tiempo real entre navegadores
Lo más relevante de WebRTC es que las comunicaciones se manejan de manera directa entre los navegadores. El tipo de canal que se establece se llama P2P (peer-to-peer), que quiere decir de igual a igual o entre pares.
En este tipo de comunicaciones no es necesario que haya un servidor entre medias, por lo que las transmisiones se realizan sin necesidad de otras infraestructuras, más allá de los navegadores y las conexiones a Internet de los propios usuarios. Para ello entran en juego protocolos como SDPo ICE que se encargan de gestionar el canal de comunicación entre los dispositivos, junto con otros protocolos pensados para mejorar la seguridad o resolver posibles problemas de conectividad, de los que hablaremos un poco más adelante.
Transmisión de audio y vídeo sin plugins
Como hemos dicho, gracias a WebRTC podemos hacer cosas que antes solo eran posibles con programas de escritorio creados en lenguajes de propósito general como Java, o plugins para extender las funcionalidades del navegador.
En cambio hoy con WebRTC todo lo que necesitan los navegadores está disponible de manera nativa, mediante APIs estándar que son soportadas por los propios clientes web. Esto hace que todos los navegadores puedan poner en marcha esta funcionalidad y se puedan comunicar entre ellos, aunque sean softwares creados por distintos fabricantes.
Rol de los servidores en la conexión WebRTC
Como hemos dicho antes, las comunicaciones se realizan de manera directa. Pero eso no quiere decir que no puedan existir servidores para facilitar ciertas funcionalidades o mejorar las posibilidades de las tecnologías.
Por ejemplo, es importante que entren en juego los servidores de señalización, que básicamente se encargan de coordinar el intercambio inicial de información, de modo que los navegadores puedan encontrarse y conectarse entre sí. También puede haber servidores intermediarios, llamados STUN/TURN servers que ayuden a realizar algunas funcionalidades cuando la conexión directa no es viable.
Al mismo tiempo, algunas aplicaciones de transmisión hacen también uso de servidores para conseguir mejorar el rendimiento o las posibilidades de los navegadores. Por ejemplo, con WebRTC el navegador puede transmitir vídeo y audio a un servidor y éste encargarse de retransmitirlo a cientos o miles de asistentes a un evento online.
Protocolos de seguridad y encriptación
Por supuesto, gracias al diseño de WebRTC podemos estar tranquilos en lo que respecta a la seguridad, básicamente porque todas las transmisiones se realizan de manera cifrada mediante DTLS, siglas de «Datagram Transport Layer Security». De manera adicional existe un protocolo que nos garantiza que el vídeo, audio o los datos no se puedan manipular, llamado SRTP siglas de «Secure Real-time Transport Protocol».
Ventajas de utilizar la tecnología WebRTC
Las ventajas de WebRTC son muchas y diversas. Prueba de ello es la proliferación de servicios en Internet que nos permiten comunicaciones usando el propio navegador. Vamos a ver ahora algunas de los beneficios más relevantes.
Gratuidad y código abierto (Open Source)
WebRTC está basado en tecnologías de código abierto, por lo que cualquiera las puede usar. Los navegadores las pueden implementar, así como los creadores de aplicaciones se pueden apoyar en ellas para conseguir mejorar sus servicios.
Esto es un gran avance porque nos permite que la comunidad de desarrolladores se pueda beneficiar de tecnologías sofisticadas, con una implementación relativamente asequible mediante librerías y frameworks. Paralelamente a las empresas les permite mejorar sus servicios, haciendo que estén disponibles para cualquier usuario, con el único requisito de tener un navegador.
Alto rendimiento y baja latencia
Las tecnologías están pensadas justamente para favorecer las comunicaciones en tiempo real, mediante audio y vídeo. Por ello están preparadas para cubrir los requisitos técnicos necesarios para hacer viables estos procesos, con un rendimiento elevado y con la menor latencia posible. Esto hace que sea ideal para videollamadas pero también para juegos en tiempo real o transmisiones en streaming en directo.
Seguridad nativa con protocolos de cifrado
Como hemos dicho anteriormente, la seguridad es uno de los pilares del diseño de WebRTC, por lo que podemos estar tranquilos en lo que respecta a la protección de la privacidad y la integridad de los datos.
Compatibilidad universal entre navegadores
Otra ventaja muy importante es que WebRTC está soportado por todos los navegadores modernos y funciona de manera consistente. Esto es vital para desarrollar aplicaciones que puedan funcionar en todos los clientes web, tanto para escritorio como para móviles, así como en aplicaciones.
Casos de uso más comunes de WebRTC
WebRTC se encarga de dar soporte a numerosas aplicaciones que seguramente usas en tu día a día. Te vamos a dar algunos ejemplos que seguramente conozcas y otros que no son tan conocidos.
Videollamadas y conferencias web (Google Meet, Jitsi)
El caso de uso más relevante es el que hacen los servicios de mensajería y comunicaciones como Google Meet, Slack o Jitsi Meet. Estos servicios se basan en WebRTC para ofrecer videoconferencias fluidas y seguras en las que solamente necesitamos el navegador para trabajar.
Servicios de streaming en tiempo real
Existen también plataformas de transmisión en vivo de eventos o webinars. Gracias a esas plataformas es posible enviar conexiones a un servidor que se encarga de retransmitir el contenido a servicios de streaming o bien directamente a los usuarios que asisten al evento o webinar.
Ejemplos típicos serían Twitch, Meta Live, Vimeo Livestream. Incluso tienes algunas aplicaciones como Streamyard que te permite transmisiones en tiempo real a través de plataformas como Youtube, Facebook, etc.
Aplicaciones de chat y mensajería instantánea
Gracias a RTCDataChannel puedes también enviar datos en tiempo real, lo que permite implementar aplicaciones como el chat que está integrado en Gmail. A través de esta misma tecnología es posible incluso compartir archivos.
Gaming en la nube y videojuegos multijugador
WebRTC se utiliza también para facilitar los videojuegos en la nube. El servicio más relevante que usaba esta tecnología en realidad ha desaparecido ya y posiblemente lo conocerías: Google Stadia. De todos modos, todavía se usa en otras plataformas como NVIDIA GeForce NOW o Xbox Cloud Gaming.
Educación y telemedicina a distancia
En el ámbito de la educación online también se plantea como una tecnología muy valiosa, ya que nos permite realizar clases en vivo en cursos o tutorías con una audiencia de todos los tamaños, con la posibilidad de monitorizar quiénes asisten a las clases.
Diferencias entre WebRTC y otras tecnologías de comunicación
Existen muchas tecnologías de comunicación que funcionan actualmente en Internet. Los competidores más importantes de WebRTC se basan soluciones propietarias, por lo que no funcionan de manera estándar en los navegadores. Incluso, aunque otras se basan en protocolos y servicios estándar como WebSockets, la versatilidad de WebRTC la hace especialmente valiosa. Vamos a ver algunos ejemplos a modo de comparativa.
WebRTC vs. VoIP tradicional
VoIP es un servicio mucho más tradicional para las comunicaciones de audio a través de Internet. Sin embargo, para las comunicaciones VoIP se necesitan servidores centralizados por lo que se requiere una infraestructura bastante cara.
En cambio, WebRTC no solo permite voz, sino que además se puede realizar la comunicación entre los navegadores, lo que hace que el coste en servidores sea mucho menor.
WebRTC vs. Zoom, Meet o Teams
Como quizás sepas, existen varias plataformas similares que ofrecen funcionalidades similares a lo que conseguimos con WebRTC. Ejemplos clásicos son Zoom, GoToMeeting o WebEx de Cisco, que permiten hacer reuniones online o bien webinars. La diferencia principal es que para usar estas herramientas necesitas una aplicación de escritorio, lo que hace que no sea tan sencilla de usar para todos los usuarios ni tan disponible.
Por su parte, Google Meet o Microsoft Teams en realidad utilizan parte de su tecnología con WebRTC, por lo que no presentan tantas diferencias. Sin embargo, estas empresas ofrecen muchos otros servicios que requieren de servidores centralizados, como registros de las comunicaciones, almacenamiento de las conversaciones o de los archivos transmitidos y mucho más.
WebRTC vs. WebSockets
Hay otra tecnología abierta que funciona perfectamente en los navegadores y que permite también la comunicación en tiempo real. Se trata de WebSockets y probablemente habrás oído hablar de ella, como la principal herramienta para implementar servicios de chat.
Sin embargo WebSockets no es tan potente como WebRTC, ya que simplemente permite transmitir datos y no está pensada implementar transmisiones como las de audio o vídeo, ni de archivos pesados en general. WebSockets puedes usarlo más bien para notificaciones en tiempo real o mensajería de texto.
Desafíos y consideraciones al implementar WebRTC
WebRTC ha permitido una enorme cantidad de servicios nuevos en Internet para las comunicaciones, pero todavía existen retos relevantes para conseguir garantizar el funcionamiento correcto y de manera escalable. Vamos a ver algunos de los desafíos más importantes que podrás encontrarte al implementar la tecnología.
La complejidad del desarrollo y la gestión de la señalización
WebRTC no define un medio estándar que puedas usar en la señalización y que sea fijo. Es por ello que los desarrolladores deben crear o integrar sus propios sistemas usando tecnologías como WebSockets, MQTT o incluso REST.
Con todo, encontrarás que existe cierta complejidad de desarrollo, ya que requiere que gestiones el intercambio de información entre protocolos que son necesarios para establecer la conexión entre pares.
Problemas de NAT y firewalls
Aunque la tecnología está preparada para gestionar los canales de comunicación en Internet con los distintos dispositivos que se encuentran en la red, a menudo se encuentran obstáculos con NAT y firewalls. Para ello WebRTC ofrece soluciones, como usar servidores intermedios, pero requiere un gasto mayor en infraestructura.
La gestión de la calidad del servicio (QoS)
Otro problema es la necesidad de mantener una buena calidad en el servicio, sobre todo en las transmisiones de audio y video. El problema aquí es que esta calidad no depende únicamente del creador del servicio, sino también de los clientes que se conecten y sus equipos y conexiones.
Escalabilidad en conexiones a gran escala
Si tienes que implementar transmisiones con muchas personas WebRTC puede dar problemas, porque los navegadores de los usuarios y sus conexiones tendrán que gestionar múltiples señales, lo que puede llevar a una saturación del sistema del usuario. Por ello, en llamadas a una persona, o unas pocas pueden funcionar perfecto pero no resultarán tan viables llamadas con decenas o cientos de usuarios al mismo tiempo. En estos casos se necesitaría contar con un servidor central para la gestión del flujo de datos.