Pular para o conteúdo

Realtime

Com o Realtime, o app recebe os eventos do projeto assim que acontecem, sem ficar consultando a API. O @owbase/web abre uma conexão (websocket) com wss://cloud.owbase.dev/v1/realtime e entrega cada evento ao callback.

realtime.ts
import { Channel, Realtime } from '@owbase/web';
import { client } from './client';
const realtime = new Realtime(client);
// Qualquer linha criada, alterada ou apagada na tabela pedidos (que o usuário possa ler).
const pedidos = await realtime.subscribe(Channel.tablesdb('loja').table('pedidos').row(), (evento) => {
console.log(evento.events[0], evento.payload);
});
// A conta do usuário logado (perfil, sessões, preferências).
const conta = await realtime.subscribe(Channel.account(), (evento) => console.log('conta:', evento.events[0]));
// Ao sair da tela:
await pedidos.unsubscribe();
await conta.unsubscribe();

Monte o canal com a classe Channel (o SDK confere a forma) ou escreva o nome:

Canal Recebe
Channel.account() mudanças na conta do usuário logado
Channel.tablesdb('loja').table('pedidos').row() linhas da tabela pedidos
Channel.tablesdb('loja').table('pedidos').row('p1') só a linha p1
Channel.bucket('fotos').file() arquivos do bucket fotos
Channel.function('f1') execuções da function f1
Channel.team('t1'), Channel.membership('m1') um time, uma participação
Channel.rows(), Channel.files(), Channel.executions() tudo daquele tipo no projeto

Acrescente .create(), .update() ou .delete() a um canal de linha ou arquivo para receber só aquela ação.

Cada evento traz events (os nomes do evento, do mais específico ao mais geral, como databases.loja.tables.pedidos.rows.p1.update), channels, timestamp e payload (o recurso já alterado).

O usuário só recebe eventos dos recursos que pode ler. Sem sessão, recebe só os de recursos públicos (Role.any()) ou abertos a visitantes (Role.guests()).

unsubscribe() cancela uma assinatura; realtime.disconnect() fecha a conexão inteira (ao sair do app ou trocar de usuário).