WebRTC vs WebSocket: entre pares o con un servidor

WebRTC vs WebSocket

WebRTC vs WebSocket (y webhooks, y HTTP) | We.Inc

WebRTC vs WebSocket: medios y canales de datos entre pares frente a un socket cliente-servidor, por qué WebRTC sigue necesitando señalización, además de webhook vs WebSocket y HTTP vs WebSocket.

WebSocket mantiene una conexión bidireccional entre un navegador y tu servidor, y cada mensaje pasa por ese servidor. WebRTC conecta los navegadores directamente entre sí para audio, vídeo y datos arbitrarios, cifrados con DTLS y SRTP. A menudo se usan juntos: un WebSocket transporta los mensajes de señalización que configuran la llamada WebRTC.

WebRTC y WebSocket comparados

Elige lo que estás construyendo en el asistente de abajo y te dirá qué tecnología encaja y por qué. También responde a las dos preguntas que la gente suele mezclar con esta: los webhooks, que van de servidor a servidor, y las peticiones HTTP normales.

Preguntas frecuentes

¿WebRTC sustituye a los WebSockets?

No. WebRTC no incluye ninguna forma de que dos navegadores se encuentren, así que sigues necesitando un canal para intercambiar los mensajes de configuración. Lo habitual es un WebSocket, aunque MDN señala que sirve cualquier transporte.

¿Puede WebRTC enviar datos simples, no solo vídeo?

Sí. RTCPeerConnection.createDataChannel() abre un canal para datos de texto o binarios entre pares, y su API se parece a propósito a la de WebSocket, con send() y un evento message.

¿Qué diferencia hay entre un webhook y un WebSocket?

Un webhook es una petición HTTP que un servidor envía a una URL de otro servidor cuando ocurre un evento, y después la conexión termina. Un WebSocket es una conexión que permanece abierta para que un navegador y un servidor sigan hablando.

¿Es un WebSocket más rápido que HTTP?

Para muchos mensajes pequeños, normalmente sí, porque el handshake ocurre una sola vez y cada mensaje posterior se ahorra las cabeceras de la petición. Para cargar una página o un archivo, el HTTP de siempre es la herramienta correcta y se beneficia de la caché.

¿WebRTC sigue siendo entre pares con mucha gente en una llamada?

Cada conexión es entre dos pares, así que una malla completa crece rápido a medida que entra gente. Muchos productos de llamadas más grandes enrutan los medios a través de un servidor que reenvía los flujos, algo que queda fuera de la propia API de WebRTC del navegador.

Por qué WebRTC sigue necesitando un servidor

Webhook vs WebSocket

HTTP vs WebSocket

Configurar WebRTC sobre un WebSocket

Quien inicia la llamada: crea una oferta y un canal de datos

El WebSocket solo reenvía los mensajes de configuración. La URL de STUN es un marcador para el servidor que elijas.

Quien recibe: responde y recibe el canal

El otro lado obtiene el canal mediante el evento datachannel en lugar de crearlo.

Un canal sin orden y sin reintentos para el estado del juego

maxRetransmits y maxPacketLifeTime no pueden definirse a la vez; elige uno.

Webhook vs WebSocket de un vistazo

Webhook vs WebSocket

HTTP vs WebSocket de un vistazo

HTTP vs WebSocket

Videollamada entre dos personas

WebRTC, con un WebSocket para la señalización

El audio y el vídeo deben ir directamente entre quienes hablan, con poco retraso. Un pequeño servidor WebSocket solo transmite la oferta, la respuesta y los candidatos durante la configuración.

Sala de chat en grupo en una app web

WebSocket

Los mensajes deben guardarse, moderarse y enviarse a todos los de la sala, así que de todas formas deben pasar por tu servidor. Un socket por usuario es la solución sencilla.

Enviar un archivo grande al navegador de un amigo

Canal de datos WebRTC

Un canal de datos fiable y ordenado mueve los bytes entre pares, así que tu servidor nunca guarda ni retransmite el archivo salvo que haga falta TURN.

Movimientos rápidos en un juego de dos jugadores

Canal de datos WebRTC, sin orden

Sin orden y sin retransmisiones, una actualización de posición perdida se descarta en lugar de retener a las más nuevas. Si necesitas un servidor árbitro, usa mejor un WebSocket hacia él.

Un proveedor de pagos confirma un pedido

Webhook

El servidor del proveedor invoca una URL de tu servidor cuando el pago se completa. No interviene ningún navegador y nada tiene que quedar abierto.

Cargar una página de producto y sus datos

HTTP normal

Petición y respuesta es todo lo que necesitas, y las respuestas GET se pueden cachear. Una conexión persistente añadiría coste sin ningún beneficio.

¿Qué estás construyendo?

Elige una función

Usa

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio