SSE (Server-Sent Events)

SSE (Server-Sent Events) sono uno standard HTTP/1.1 che permette al server di inviare eventi in streaming al client su una connessione long-lived, identificata tramite content-type “text/event-stream”.

È un canale unidirezionale: dal server -> al client.

Il client (browser o consumer) apre una richiesta GET che rimane aperta, e il server manda messaggi quando vuole.

Supporto su GovWay

Per utilizzare SSE (Server-Sent Events) su GovWay è necessario seguire i seguenti accorgimenti di configurazione:

  • È necessario che l’erogazione o la fruizione non richieda funzionalità che impongono il buffering della risposta, come ad esempio:

  • il client deve invocare l’erogazione o la fruizione di GovWay attraverso un’URL che identifichi il canale NIO, utilizzando il path async, come descritto nella sezione Gestione I/O (BIO/NIO). Se viene utilizzato il contesto sync o quello di default la modalità SSE non si attiva.

  • per supportare una connessione long-lived è necessario modificare i criteri di read timeout predefiniti, come descritto nella sezione Tempi Risposta.

  • Per poter individuare correttamente la richiesta nello storico delle transazioni, è necessario abilitare il tracciamento della fase «Risposta in consegna», come descritto nella sezione Fasi di Tracciamento. In questo modo la traccia verrà generata immediatamente alla ricezione dei primi eventi, senza attendere il completamento della risposta, che in uno scenario SSE risulta indefinito.

La funzionalità SSE è attiva di default, ma può essere disabilitata per una singola erogazione o fruizione di API tramite la seguente Proprietà:

  • connettori.serverSentEvents.enabled (true/false default:true): consente di abilitare o disabilitare la gestione SSE;

È inoltre possibile modificare il comportamento di default a livello globale agendo sul file di configurazione “govway_local.properties”, definendo le proprietà specifiche rispettivamente per fruizioni ed erogazioni.

# Fruizione di API
org.openspcoop2.pdd.connettori.inoltroBuste.serverSentEvents.enabled=true
# Erogazioni di API
org.openspcoop2.pdd.connettori.consegnaContenutiApplicativi.serverSentEvents.enabled=true