Сповіщення в реальному часі (SSE)
Сповіщення в реальному часі (SSE)
Підпишіться на канали PostgreSQL NOTIFY через Server-Sent Events:
# Bearer-токен (JWT або API-токен)
curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
-H "Authorization: Bearer $TOKEN"
# Прямі облікові дані (HTTP Basic Auth — GRANT … TO pgarachne не потрібен)
curl -N "http://localhost:8080/db/my_database/sse?channels=orders,users" \
-u "alice:secret"Кожне повідомлення — це JSON із назвою каналу та вмістом (payload):
{"channel":"orders","data":{"id":123,"status":"created"}}Якщо вміст є звичайним текстом, він обгортається як рядок у data.
Надсилання сповіщень з PostgreSQL
З psql або будь-якої іншої сесії бази даних:
-- Простий текстовий вміст
NOTIFY orders, 'new order';
-- JSON-вміст
NOTIFY orders, '{"id":123,"status":"created"}';
З тригера або збереженої процедури:
PERFORM pg_notify('orders', json_build_object('id', NEW.id, 'status', NEW.status)::text);Примітка:
NOTIFY доставляється іншим сесіям лише після того, як транзакція,
що надсилає повідомлення, буде завершена (commit). Якщо ви виконуєте його всередині відкритої транзакції в
psql, підписники не отримають повідомлення, доки ви не виконаєте COMMIT.