Flux de tasques SSE reconnectable amb Node.js

Construeix un flux de tasques SSE reconnectable amb Node.js. Aprèn a manejar reconnexions, deduplicació i l' ús de Last-Event-ID en aquest projecte pràctic.

martes, 14 de julio de 2026 • 5 min de lectura • Equip Q2BSTUDIO

Maneig de reconnexió i deduplicació en fluxos SSE

En el desenvolupament de programari modern, les aplicacions cada vegada executen processos més llargs i complexos: entrenament de models d'intel·ligència artificial, anàlisi de grans volums de dades, generació d'informes d'intel·ligència de negoci o integracions amb serveis cloud AWS i Azure. Mostrar simplement un missatge de 'carregant' no és suficient: l'usuari necessita conèixer l'estat real de la tasca, si està encolada, en execució, en proves, esperant entrada o completada. Per gestionar aquest flux en temps real, els desenvolupadors poden optar per diverses tecnologies. Una de les més lleugeres i eficaces és Server-Sent Events (SSE), un estàndard HTTP per enviar esdeveniments del servidor al client. Tot i que en aplicacions molt interactives s'elegeix WebSocket, SSE ofereix una alternativa senzilla per a fluxos unidireccionals, especialment quan es combina amb Node.js i el seu model asíncron. En aquest article explorarem com implementar un flux de tasques reconnectable amb SSE, analitzant els patrons de confiabilitat i com una empresa com Q2BSTUDIO pot ajudar-lo a construir aplicacions a mesura que aprofitin aquestes capacitats.

La base de SSE és sorprenentment simple: el servidor manté una connexió HTTP oberta i envia esdeveniments amb format text, cadascun acabat amb un salt de línia doble. Cada esdeveniment pot incloure un identificador únic (id), un tipus (event) i el contingut (data). Aquest identificador és crucial perquè permet al client reprendre la comunicació des de l'últim esdeveniment acceptat mitjançant la capçalera Last-Event-ID. Imaginem una tasca que passa per quatre estats: encolada, executant-se, en proves i completada. En una primera connexió, el servidor podria enviar només els dos primers esdeveniments i després tancar abruptament, simulant una interrupció de xarxa. El client, en reconnectar, envia l'últim ID rebut i el servidor filtra el seu registre d'esdeveniments per entregar només els pendents. Aquest mecanisme, tot i que conceptualment senzill, exigeix pensar en persistència, autorització i límits d' historial. En entorns productius, no es pot mantenir tota la història en memòria; cal definir una finestra de retenció i un pla per quan el cursor del client hagi expirat, per exemple retornant un estat complet actual.

La deduplicació és un altre pilar d'un sistema confiable. Fins i tot amb l'ús d'identificadors, el client ha d'estar preparat per rebre el mateix esdeveniment més d'una vegada. La xarxa pot causar reintents, el servidor pot reenviar esdeveniments davant d'una reconnexió ambigua. Per això, el consumidor ha d'emmagatzemar els esdeveniments en una estructura clau-valor (com un Map) i reemplaçar entrades repetides de forma innòcua. Aquesta projecció d'estat idempotent és vàlida per a notificacions d'estat, però no per a accions irreversibles com cobraments o fusions de codi; en aquests casos, la idempotència s'ha de garantir també en el servidor. Aprendre a combinar represa per cursor i deduplicació en el client és una habilitat transferible a altres sistemes com cues de missatges, fluxos de canvi (change streams) o interfícies d'agents d'intel·ligència artificial.

La implementació pràctica amb Node.js 20 o superior no requereix paquets externs. El servidor es pot construir amb el mòdul nadiu http o https, configurant els encapçalats adequats (Content-Type: text/event-stream) i escrivint esdeveniments amb el format esmentat. El client, per la seva banda, pot fer servir l'API EventSource del navegador o una implementació personalitzada en Node.js per simular desconnexions i reconnexions. En un projecte d'aprenentatge típic, es defineix una seqüència fixa d'esdeveniments i es força una interrupció primerenca; després es verifica que la reconnexió obté els esdeveniments restants i que el resultat final és idèntic a l'esperat. Aquest exercici demostra que la recuperació de connexió no equival a recuperació d'estat: el client necessita un cursor persistent i una estratègia de reconciliació.

Des d' una perspectiva empresarial, dominar aquests patrons permet oferir solucions robustes en àrees com l' automatització de processos, el monitoratge d' infraestructura cloud o el lliurament d' informes en temps real. Quan una tasca d'intel·ligència artificial per a empreses tarda diversos minuts, l'usuari no pot quedar-se sense retroalimentació; necessita saber si el procés avança, si hi ha errors o si ha d'esperar una entrada addicional. Implementar un flux de tasques amb SSE reconnectable és una inversió en experiència d'usuari i confiabilitat del sistema. A més, aquests conceptes són la base per construir aplicacions a mida d'alt rendiment que manegin peticions asíncrones de forma elegant.

En Q2BSTUDIO entenem que cada projecte té requisits únics. El nostre equip d'enginyers dissenya solucions que integren intel·ligència artificial, ciberseguretat i serveis cloud AWS i Azure per garantir escalabilitat i protecció de dades. Si la seva empresa necessita un sistema de notificacions en temps real, una plataforma d'anàlisi amb Power BI o un gestor de tasques asíncrones, podem desenvolupar un servei cloud robust que utilitzi SSE, WebSocket o una combinació de tots dos segons el cas. L'elecció del transport depèn del flux de comunicació: SSE és ideal per a notificacions unidireccionals i reconnexió simple, mentre que WebSocket ofereix bidireccionalitat per a aplicacions col·laboratives. Però els principis d'identificació d'esdeveniments, represa i deduplicació són universals.

Finalment, no hem d'oblidar la importància de la idempotència en el disseny d'APIs i microserveis. En construir interfícies de llarga durada, ja sigui per a IA, automatització o intel·ligència de negoci, cada esdeveniment ha de tenir un identificador persistent i estable a través de reinicis del servidor. La història ha de tenir un límit de retenció configurable, i els clients que arribin amb un cursor massa antic han de rebre una instantània completa de l' estat en lloc d' un historial parcial. Aquests patrons, apresos amb un simple exercici de SSE, s' apliquen directament al disseny d' arquitectures orientades a esdeveniments, pipelins de dades i sistemes d' agents autònoms. I si necessita suport per implementar aquestes solucions en la seva organització, en Q2BSTUDIO oferim serveis d'intel·ligència de negoci, desenvolupament de programari a mida i consultoria en intel·ligència artificial per a empreses, ajudant-lo a transformar els seus processos amb tecnologia d'avantguarda.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.