¡Hola! Imagina que estás teniendo una charla video con un buen amigo tuyo dentro de 15 minutos, pero olvidaste enviar un enlace de reunión junto con la invitación del calendario. Lo sé, lo sé. Hay soluciones para esto, pero ¿qué tal si pudieras construir tu propia aplicación de conferencia video en React? Mi nombre es Christian, soy ingeniero de producto en Daily, la compañía WebRTC para desarrolladores. Y uno de mis principales enfoques en trabajar en Daily es hacer que nuestras APIs sean lo más fáciles posible de usar para los desarrolladores de React.
Volviendo al problema de construir-tu-propia-aplicación-de-llamada-video-en-React. La web tiene cómo hacerlo, tutoriales y códigos en varios formatos pero prácticamente todos los que he visto sufren de los mismos problemas. Requieren una cantidad sólida de código, tanto en el lado del cliente como del servidor, generalmente no manejan más de dos o tres personas en una llamada, y requieren configurar una infraestructura mucho más allá de un CDN que aloja tu paquete de front-end. Entonces, ¿por qué es WebRTC, la base de todo esto, tan difícil? WebRTC en sí es un proyecto open-source y proporciona APIs estándar para enviar audio, video, y data a través de la web en tiempo real. En teoría, esto significa que puedes usar las APIs de WebRTC en diferentes navegadores y sistemas operativos y deberías estar bien. El problema es que cada proveedor de navegador mantiene su propia implementación de WebRTC y ¿sabes lo que eso significa? Allí tenemos un dragón. Usualmente, una aplicación WebRTC pedirá permiso para la cámara y el micrófono para procesar más las pistas de medios que provienen de tus dispositivos de audio y video. GetUserMedia es probablemente la primera API que ves mencionada en artículos y videos sobre WebRTC. Esta API en sí misma ya tiene diferencias interesantes en su comportamiento en diferentes navegadores. Como ejemplo, Chrome te permite volver a solicitar audio y video tantas veces como quieras incluso cuando se ha bloqueado el acceso. Safari, sin embargo, no permite volver a solicitar, por lo que cuando un usuario bloquea el acceso, tu mejor opción es hacer que actualicen la página.
Ahora, una vez que has logrado obtener un flujo de medios de los dispositivos de los usuarios, para hacer que tu aplicación sea una aplicación de conferencia video, necesitarás enviar el flujo a través de los cables, de lo contrario solo sería una aplicación de espejo. La API de Conexión de Pares RTC es la herramienta de elección aquí, pero en realidad conseguir esa conexión requiere mucha información. ¿A quién te estás conectando? ¿Qué códecs se están utilizando para audio y video? ¿Cuál es el ancho de banda disponible? Configurar esta conexión también incluye una fase de negociación donde un cliente, el primero en conectarse, envía una oferta y el cliente remoto responde con una respuesta. Además, si no tienes un servidor de señalización configurado para identificar a los clientes tú mismo probablemente tendrás que recurrir a un servidor de stun o tono en internet para hacer el proceso de identificación del cliente por ti. Finalmente, cuando la conexión se negocia y se configura, puedes agregar las pistas de audio y video del usuario a la conexión y si todo salió bien, los bytes de medios deberían estar fluyendo de un cliente a otro. Luego finalmente tendrás que acceder a las pistas de medios remotas del objeto de Conexión Pura RTC adjuntar las pistas a los elementos de medios en el navegador y luego los usuarios de tu aplicación deberían verse en la pantalla.
Hasta ahora no hemos pensado en ningún código React. Pero somos desarrolladores de React, ¿verdad? Entonces, mientras todas las cosas que acabo de mencionar parecen complejas y abrumadoras, y sí, lo son, realmente no tienes que preocuparte por ellas. Aquí es donde quiero presentarte Daily React. Es una biblioteca React construida sobre el SDK del cliente de Daily y proporciona todas las cosas que necesitas para construir una aplicación React con capacidades WebRTC. Volviendo al problema original, ¿cómo puedes construir una aplicación de videoconferencia en React? Aquí está cómo. La aplicación solo tiene unos pocos componentes, App, Call, Prejoin, CallControls y Tile. Todos tienen alrededor de 30 líneas de código, incluyendo importaciones. Antes de poder utilizar cualquiera de los hooks y componentes de Daily React, envolverás con DailyProvider. Acepta un montón de opciones de configuración para Call, pero para este caso, URL y Username son suficientes.
Comments