SSE vs WebSocket: elige el stream adecuado

SSE vs WebSocket

SSE vs WebSocket: qué opción de tiempo real usar | We.Inc

Server-sent events vs WebSockets: EventSource y WebSocket lado a lado, reconexión, datos binarios, límites de conexión, un asistente de decisión y servidores Node mínimos para ambos.

Los server-sent events envían texto en streaming del servidor al navegador sobre una respuesta HTTP normal, y la API EventSource se reconecta sola. Un WebSocket convierte la conexión en un canal bidireccional que transporta texto o binario en ambos sentidos. Usa SSE para feeds, notificaciones y progreso; usa WebSockets cuando el navegador deba enviar mensajes frecuentes de vuelta.

Lado a lado

¿No tienes claro cuál necesita tu funcionalidad? Marca en el asistente de abajo las afirmaciones que se cumplen. Aplica las mismas reglas que la tabla de arriba y te dice qué API encaja y por qué.

Preguntas frecuentes

¿Puede el navegador enviar datos al servidor con SSE?

No por el propio stream. El stream de eventos solo fluye del servidor al cliente, así que el navegador envía sus mensajes con peticiones fetch normales. Para tráfico tipo chat en ambos sentidos, un WebSocket encaja mejor.

¿Cómo evito que EventSource se reconecte?

Invoca close() en el cliente. Desde el servidor, el estándar HTML dice que una respuesta 204 No Content indica al cliente que deje de reconectarse.

¿Puedo enviar una cabecera Authorization con EventSource?

No. El constructor solo acepta una URL y un objeto de opciones cuyo único ajuste es withCredentials. Usa una cookie, un token de corta duración en la URL o un lector basado en fetch si necesitas cabeceras personalizadas.

¿SSE está obsoleto ahora que existen los WebSockets?

No. El formato text/event-stream sigue siendo una buena opción para feeds unidireccionales porque funciona con servidores HTTP, proxies y autenticación normales, sin cambio de protocolo.

¿Cuál consume menos recursos del servidor?

Los dos mantienen una conexión de larga duración por cliente, así que la diferencia es pequeña. Importa más si tu hosting permite respuestas de larga duración o cambios de protocolo, así que revisa primero sus límites de duración de las peticiones.

Cómo funcionan los server-sent events

Cómo funcionan los WebSockets

Una regla rápida

Server-sent events: código mínimo

Servidor SSE en Node puro

No hace falta ninguna librería. La respuesta sigue abierta; cada escritura es un evento, y la línea de comentario evita que los proxies inactivos la cierren.

EventSource en el navegador

addEventListener usa el nombre del evento del stream. La reconexión ocurre sin que escribas código.

WebSocket: código mínimo

Servidor WebSocket con el paquete ws

Instálalo con npm install ws. Devuelve cada mensaje en mayúsculas al cliente que lo envió.

WebSocket en el navegador, con una reconexión sencilla

A diferencia de EventSource, nada se reconecta por ti, así que esto espera un momento tras el cierre y abre un socket nuevo.

El navegador envía muchos mensajes de vuelta, varios por segundo o más

Los datos son binarios, como fragmentos de audio o buffers de estado de juego

Los clientes deben recuperar los eventos perdidos tras una conexión caída

El tráfico pasa por proxies o hostings que solo manejan HTTP normal

Encajan los server-sent events. Nada de lo que marcaste necesita un canal bidireccional, y EventSource te da reconexión y reanudación gratis.

Encaja un WebSocket. Necesitas mensajes frecuentes desde el navegador o datos binarios, algo que un stream de eventos no puede transportar.

¿Cuál encaja con tu funcionalidad?

Marca lo que se cumple en tu funcionalidad

Recomendación

Server-sent events

WebSocket

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio