streaming real-time ndjson sse websockets data-formats

Formatos de Datos en Tiempo Real y Streaming: NDJSON, SSE y más

Aprenda sobre formatos de datos en streaming como NDJSON, JSON Lines y Server-Sent Events (SSE). Maneje datos en tiempo real de forma eficiente en aplicaciones web.

2026-04-15

Formatos de Datos en Tiempo Real y Streaming: Una Guía Práctica

En el desarrollo web moderno, los datos ya no son solo archivos estáticos o respuestas únicas de API. Las actualizaciones en tiempo real, los registros (logs) y los conjuntos de datos masivos requieren formatos de streaming: formas de enviar y procesar datos a medida que llegan, en lugar de esperar a que todo el paquete esté listo. Esta guía explora los formatos más populares para streaming y comunicación en tiempo real.

1. Formatos Delimitados por Líneas (NDJSON y JSON Lines)

Cuando necesita transmitir una lista de objetos (como registros de una base de datos), un array JSON estándar [...] es problemático porque el analizador (parser) tiene que esperar al cierre ] antes de poder procesar nada. Los formatos delimitados por líneas solucionan esto.

NDJSON (Newline Delimited JSON)

NDJSON es un estándar para almacenar o transmitir datos donde cada línea es un objeto JSON válido.

  • Cómo funciona: {"id":1}\n{"id":2}\n...
  • Ventaja clave: Puede analizar y procesar cada objeto individualmente tan pronto como se recibe el salto de línea \n.
  • Caso de uso: Exportaciones de grandes bases de datos, registro estructurado y canalizaciones de datos.

JSON Lines (JSONL)

JSON Lines es esencialmente lo mismo que NDJSON. Es un formato basado en texto donde cada línea es un valor JSON válido.

  • Ventaja clave: Compatibilidad con herramientas de Unix como grep, awk y sed.
  • Caso de uso: Almacenamiento de conjuntos de datos para entrenamiento de IA/ML y análisis de registros.

CSV Stream

Similar a NDJSON, un CSV Stream envía filas de valores separados por comas línea por línea.

  • Ventaja clave: Gasto general extremadamente bajo.
  • Caso de uso: Exportación de millones de filas a formatos compatibles con Excel en tiempo real.

2. Server-Sent Events (SSE)

Server-Sent Events (SSE) es un estándar que permite a los servidores enviar datos a las páginas web a través de HTTP. A diferencia de WebSockets, es un canal de comunicación unidireccional (Servidor -> Cliente).

  • Cómo funciona: El servidor mantiene abierta una conexión HTTP y envía datos en un formato específico text/event-stream.
  • Formato del protocolo:
    event: user-update
    data: {"name": "Alice"}
    
    event: chat-message
    data: "¡Hola mundo!"
    
  • Ventaja clave: Reconexión automática, ligero y funciona sobre HTTP/HTTPS estándar.
  • Caso de uso: Resultados deportivos en vivo, cotizaciones de bolsa y notificaciones de redes sociales.

3. WebSockets y Formatos de Mensajes

Mientras que SSE es para streaming unidireccional, WebSockets proporciona un canal de comunicación dúplex completo (bidireccional).

Formatos de Mensajes WebSocket

Debido a que WebSockets solo proporciona una capa de transporte, los desarrolladores deben elegir un formato de mensaje.

  • JSON: La opción más común por su facilidad de uso.

  • Binario (Protobuf/MessagePack): Se utiliza cuando la baja latencia y el tamaño pequeño del paquete son críticos.

  • Protocolos de texto personalizados: A veces se utilizan para comandos simples.

  • Caso de uso: Edición colaborativa en tiempo real (Google Docs), juegos en línea y aplicaciones de chat.


Comparación de Enfoques de Streaming

Formato / Tecnología Dirección Gasto General Reconexión Ideal para
NDJSON / JSONL Unidireccional Bajo N/A (Archivo/Stream) Logs, Exportación de datos
SSE Servidor -> Cliente Muy bajo Automática Dashboards en vivo
WebSockets Bidireccional Medio Manual Aplicaciones interactivas
CSV Stream Unidireccional Mínimo N/A Informes grandes

FAQ: Preguntas Frecuentes

P: ¿Por qué no usar simplemente un array JSON para streaming?

R: Los analizadores JSON estándar funcionan con el principio de "todo o nada". No pueden entregar objetos hasta que se cierre todo el array. NDJSON permite un análisis "incremental", lo que ahorra memoria y reduce la latencia.

P: ¿Cuándo debería usar SSE en lugar de WebSockets?

R: Use SSE si solo necesita que el servidor envíe datos al cliente (ej. notificaciones). SSE es más fácil de implementar, gestiona las desconexiones automáticamente y es más amigable con los cortafuegos que WebSockets.

P: ¿Cómo manejo archivos NDJSON grandes en Node.js?

R: Use un analizador de streaming como readline o una librería dedicada a NDJSON. Esto le permite procesar gigabytes de datos con una huella de memoria constante y pequeña.

Herramientas Relacionadas en Tool3M