Ειδοποιήσεις σε Πραγματικό Χρόνο (SSE)

1 λεπτά ανάγνωσης

Ειδοποιήσεις σε Πραγματικό Χρόνο (SSE)

Εγγραφείτε σε κανάλια NOTIFY του PostgreSQL μέσω Server-Sent Events:

# Bearer token (JWT or API token)
curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
  -H "Authorization: Bearer $TOKEN"

# Direct credentials (HTTP Basic Auth — no GRANT … TO pgarachne required)
curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
  -u "alice:secret"

Κάθε μήνυμα είναι σε μορφή JSON με το όνομα του καναλιού και το payload:

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

Εάν το payload είναι απλό κείμενο, περιτυλίγεται ως συμβολοσειρά στο data.

Αποστολή ειδοποιήσεων από το PostgreSQL

Από το psql ή οποιαδήποτε συνεδρία βάσης δεδομένων:

-- Simple text payload
NOTIFY orders, 'new order';

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

Από ένα trigger ή αποθηκευμένη διαδικασία:

PERFORM pg_notify('orders', json_build_object('id', NEW.id, 'status', NEW.status)::text);
Σημείωση: Το NOTIFY παραδίδεται σε άλλες συνεδρίες μόνο μετά την ολοκλήρωση (commit) της συναλλαγής αποστολής. Εάν το εκτελέσετε μέσα σε μια ανοιχτή συναλλαγή στο psql, οι συνδρομητές δεν θα το λάβουν μέχρι να εκτελέσετε COMMIT.