HostBase

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ć.