1 min di lettura

Notifiche in tempo reale (SSE)

Iscriviti ai canali PostgreSQL NOTIFY tramite Server-Sent Events:

curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
  -H "Authorization: Bearer $TOKEN"

Ogni messaggio è JSON con il canale e il payload:

{"channel":"orders","data":{"id":123,"status":"created"}}

Se il payload è testo, viene incapsulato come stringa in data.

Inviare notifiche da PostgreSQL

Da psql o qualsiasi sessione di database:

-- Payload testo semplice
NOTIFY orders, 'nuovo ordine';

-- Payload JSON
NOTIFY orders, '{"id":123,"status":"created"}';

Da un trigger o una stored procedure:

PERFORM pg_notify('orders', json_build_object('id', NEW.id, 'status', NEW.status)::text);
Nota: NOTIFY viene consegnato alle altre sessioni solo dopo il commit della transazione mittente. Se lo esegui all’interno di una transazione aperta in psql, i sottoscrittori lo riceveranno solo dopo il COMMIT.