Server-Sent Events: De HTML5 al streaming de la IA
El misterio detrás de la IA que escribe
Seguramente notamos que, al usar herramientas como ChatGPT, las respuestas no aparecen de golpe en la pantalla. Se van escribiendo palabra por palabra frente a nuestros ojos. Este efecto fluido no es magia, es infraestructura pura. Y lo más curioso es que la tecnología que lo hace posible no se inventó ayer, sino hace casi dos décadas.
Para entender cómo funciona, tenemos que viajar a la época en que se estaba definiendo el estándar HTML5, allá por el 2006. En aquel entonces, la web era rígida: si queríamos ver información nueva, teníamos que recargar la página. Ian Hickson y el equipo de WHATWG buscaron una forma de romper esa limitación, logrando que el servidor pudiera empujar datos hacia el navegador de forma continua, sin obligar al usuario a recargar nada. Así nació Server-Sent Events (SSE).
A diferencia de WebSockets que requiere una conexión bidireccional compleja, SSE mantiene abierta una petición HTTP tradicional para transmitir datos de forma continua y en una sola vía.
Tres caminos para pedir datos
Para entender por qué SSE es tan especial, miremos las alternativas que tenemos cuando el navegador necesita pedirle información al servidor:
La primera es la petición HTTP tradicional (REST). Es un modelo de "pregunta y respuesta". El cliente pide algo y se queda esperando en blanco hasta que el servidor arma la respuesta completa y se la devuelve. Si el proceso tarda 10 segundos, el usuario se queda 10 segundos mirando un indicador de carga.
La segunda opción, cuando la web necesitó verdadero tiempo real, fueron los WebSockets. Esta tecnología abre un canal bidireccional, donde tanto el cliente como el servidor pueden enviarse mensajes al mismo tiempo. Es genial para un chat o un juego multijugador, pero mantener ese canal abierto requiere mucha memoria y es una infraestructura pesada si lo único que queremos es recibir actualizaciones.
En el medio de ambas opciones se ubicó SSE. Utiliza una petición HTTP normal, pero el servidor avisa que no va a cerrar la puerta (usando el encabezado Content-Type: text/event-stream). A partir de ese momento, la conexión queda abierta en una sola vía: el servidor transmite fragmentos de datos de forma continua y el navegador simplemente se queda escuchando, como quien sintoniza una emisora de radio.
De los gráficos de bolsa a la Inteligencia Artificial
Durante años, SSE fue una herramienta muy útil pero relegada a nichos específicos. Se usaba para actualizar el precio del dólar segundo a segundo, mostrar el avance de una barra de progreso cuando se subía un archivo pesado, o empujar notificaciones en una interfaz. Era eficiente, pero vivía a la sombra de los WebSockets.
Sin embargo, la llegada de los modelos de lenguaje (LLMs) cambió el panorama por completo. Una IA no tiene la respuesta lista al instante; va calculando y escupiendo el texto palabra por palabra (token a token). Si los desarrolladores hubieran usado peticiones HTTP tradicionales, tendríamos que mirar una pantalla en blanco hasta que el servidor termine de procesar todo el párrafo.
SSE resultó ser la pieza exacta que faltaba. Es unidireccional, nativo del navegador y súper ligero. Hoy, el cliente abre la conexión SSE y, a medida que la IA predice cada palabra en el backend, el servidor la empuja por ese tubo abierto directamente a nuestra pantalla. Entender su recorrido nos demuestra que, muchas veces, la solución perfecta a un problema moderno lleva años esperándonos en los manuales de la web.


