La Era de la Web en Tiempo Real
Históricamente, la web funcionaba bajo el ciclo de solicitud-respuesta de HTTP. Para construir aplicaciones interactivas en tiempo real, hoy contamos con dos tecnologías dominantes: WebSockets y WebRTC.
WebSockets: Flujos TCP Cliente-Servidor Persistentes
WebSockets (RFC 6455) proporciona un canal de comunicación bidireccional y completo (full-duplex) a través de una única conexión TCP persistente, que inicia mediante una petición de actualización HTTP.
Características Clave:
- Basado en TCP: Garantiza la entrega ordenada y confiable de mensajes. Si se pierde un paquete, TCP gestiona la retransmisión.
- Topología Cliente-Servidor: Los clientes siempre se conectan a un servidor central. Todos los mensajes entre usuarios deben pasar por el servidor.
- Bajo consumo de datos: Una vez establecida, las tramas tienen una sobrecarga de solo 2 a 10 bytes.
WebRTC: Canales de Datos UDP Peer-to-Peer
WebRTC es una especificación diseñada para la transmisión directa entre navegadores de audio, vídeo y datos arbitrarios (mediante la API RTCDataChannel).
Características Clave:
- Basado en UDP: Diseñado para minimizar la latencia. Los canales de datos usan SCTP sobre DTLS, permitiendo configurar entregas ordenadas/confiables o desordenadas/no-confiables.
- Peer-to-Peer: El tráfico de datos fluye directamente entre los dispositivos de los usuarios sin pasar por intermediarios.
- Negociación Compleja: Requiere un mecanismo de señalización externa para el intercambio de parámetros SDP e ICE, además de servidores STUN/TURN para atravesar firewalls y NATs.
Comparativa de Protocolos
| Característica | WebSockets | WebRTC |
|---|---|---|
| Topología | Cliente-Servidor | Peer-to-Peer (P2P) |
| Capa de Transporte | TCP | UDP (vía SCTP/DTLS) |
| Confiabilidad | Garantizada (Ordenada) | Configurable (Con o sin pérdidas) |
| Complejidad | Baja | Alta (Requiere señalización y STUN/TURN) |
| Latencia | Baja | Ultra-baja (Directo UDP) |
¿Cuál elegir?
Usa **WebSockets** cuando necesites centralizar el estado de la aplicación (chats públicos, cotizaciones financieras, alertas) y requieras una arquitectura simple de cliente-servidor.
Usa **WebRTC** para flujos masivos de audio y video, compartir pantalla en tiempo real o realizar transferencias directas de archivos grandes entre usuarios (como la herramienta P2P de ToolKitnator).