Produkty
Realtime
Zmiany w bazie, broadcast i presence przez WebSockety.
Realtime pozwala subskrybować trzy rodzaje zdarzeń: Postgres Changes (INSERT/UPDATE/DELETE w tabelach), Broadcast (wiadomości między klientami) oraz Presence (kto jest online).
Włączenie tabeli
alter publication supabase_realtime add table todos;
Nasłuchiwanie zmian
const channel = supabase
.channel("todos-zmiany")
.on(
"postgres_changes",
{ event: "*", schema: "public", table: "todos" },
(payload) => console.log("Zmiana:", payload)
)
.subscribe();
// sprzątanie
await supabase.removeChannel(channel);
Broadcast
const room = supabase.channel("pokoj-1");
room.on("broadcast", { event: "kursor" }, ({ payload }) => rysujKursor(payload));
await room.subscribe();
await room.send({ type: "broadcast", event: "kursor", payload: { x: 10, y: 20 } });
Presence
const room = supabase.channel("pokoj-1", { config: { presence: { key: userId } } });
room.on("presence", { event: "sync" }, () => console.log(room.presenceState()));
await room.subscribe(async (status) => {
if (status === "SUBSCRIBED") await room.track({ online_at: new Date().toISOString() });
});
Zdarzenia Postgres Changes respektują polityki RLS — klient otrzyma tylko te wiersze, które ma prawo odczytać.