1 min de leitura

Notificações em tempo real (SSE)

Assine canais PostgreSQL NOTIFY via Server-Sent Events:

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

Cada mensagem é JSON com o canal e o payload:

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

Se o payload for texto, ele é encapsulado como string em data.

Enviar notificações a partir do PostgreSQL

A partir do psql ou de qualquer sessão de banco de dados:

-- Payload de texto simples
NOTIFY orders, 'novo pedido';

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

A partir de um trigger ou stored procedure:

PERFORM pg_notify('orders', json_build_object('id', NEW.id, 'status', NEW.status)::text);
Nota: NOTIFY só é entregue às outras sessões após o commit da transação remetente. Se você o executar dentro de uma transação aberta no psql, os assinantes só o receberão após o COMMIT.