Server-Sent Events con ExpressJS

Recientemente tuve una excusa para jugar con la API de Server-Sent Events en el navegador web, y utilizar un microservicio ExpressJS como proveedor de eventos en tiempo real.

Server-Sent Events es una API que permite a una página web incorporar eventos push enviados desde un servidor. A diferencia de un websocket, Server-Sent Events sólo permite comunicación unidireccional enviada desde el servidor al cliente, pero el cliente no tiene la posibilidad de comunicarle nada al servidor. Sin embargo, en casos donde solamente queremos que el servidor nos pueda mandar mensajes en tiempo real y reaccionar a ellos, puede ser más que suficiente.

Además, a diferencia de WebSocket, que normalmente requiere una biblioteca específica para hacer el ugprade a websocket y la gestión de eventos, el protocolo SSE es lo suficientemente simple como para poder usarlo con casi cualquier lenguaje de programación, porque por fuera es una petición HTTP regular. Yo lo voy a usar con ExpressJS, pero en MDN hay un ejemplo para conectarlo desde PHP. Ojo, no Symfony, Laravel o algo, sino puro archivo events.php sin framework. En frontend, el cliente de SSE es compatible con todos los navegadores, y además lleva disponible desde hace años: Chrome 6 y Firefox 6 ya lo soportaban.

Sigue leyendo