Powiadomienia w czasie rzeczywistym (SSE)
Powiadomienia w czasie rzeczywistym (SSE)
Subskrybuj kanały PostgreSQL NOTIFY za pomocą Server-Sent Events:
# Token Bearer (JWT lub token API)
curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
-H "Authorization: Bearer $TOKEN"
# Bezpośrednie dane logowania (HTTP Basic Auth — GRANT … TO pgarachne nie jest wymagany)
curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
-u "alice:secret"Każda wiadomość jest w formacie JSON i zawiera nazwę kanału oraz payload:
{"channel":"orders","data":{"id":123,"status":"created"}}Jeśli payload jest zwykłym tekstem, zostaje zapakowany jako string w polu data.
Wysyłanie powiadomień z PostgreSQL
Z psql lub innej sesji bazy danych:
-- Prosty tekstowy payload
NOTIFY orders, 'new order';
-- Payload JSON
NOTIFY orders, '{"id":123,"status":"created"}';
Z triggera lub procedury składowanej:
PERFORM pg_notify('orders', json_build_object('id', NEW.id, 'status', NEW.status)::text);Uwaga:
NOTIFY jest dostarczany do innych sesji tylko po zatwierdzeniu (commit)
transakcji wysyłającej. Jeśli wykonasz je w otwartej transakcji w psql, subskrybenci nie otrzymają
powiadomienia, dopóki nie wykonasz COMMIT.