Live Provider
LiveProvider enables real-time data updates through WebSocket or Server-Sent Events.
Interface
Section titled “Interface”interface LiveProvider { subscribe(params: { resource: string; callback: (event: LiveEvent) => void }): () => void; unsubscribe?(params: { resource: string }): void; publish?(event: LiveEvent): void;}
interface LiveEvent { type: 'INSERT' | 'UPDATE' | 'DELETE'; resource: string; payload: Record<string, unknown>;}Built-in Providers
Section titled “Built-in Providers”WebSocket
Section titled “WebSocket”import { createWebSocketLiveProvider } from '@svadmin/core';const liveProvider = createWebSocketLiveProvider({ url: 'ws://localhost:3001' });Server-Sent Events (SSE)
Section titled “Server-Sent Events (SSE)”import { createSSELiveProvider } from '@svadmin/core';const liveProvider = createSSELiveProvider({ url: 'http://localhost:3001/events' });Supabase Realtime
Section titled “Supabase Realtime”import { createSupabaseLiveProvider } from '@svadmin/supabase';const liveProvider = createSupabaseLiveProvider(supabaseClient);Supports publish() via Supabase Realtime broadcast channels.
Appwrite Realtime
Section titled “Appwrite Realtime”import { createAppwriteLiveProvider } from '@svadmin/appwrite';const liveProvider = createAppwriteLiveProvider({ client, databaseId: 'main' });PocketBase Realtime
Section titled “PocketBase Realtime”import { createPocketBaseLiveProvider } from '@svadmin/pocketbase';const liveProvider = createPocketBaseLiveProvider({ pb });PocketBase uses SSE-based realtime subscriptions.
useLive — Auto-invalidate queries
Section titled “useLive — Auto-invalidate queries”useLive(liveProvider, 'posts', { liveMode: 'auto', // 'auto' | 'manual' | 'off' onLiveEvent: (event) => {}, // optional callback});useSubscription — Manual channel subscription
Section titled “useSubscription — Manual channel subscription”useSubscription({ resource: 'notifications', liveProvider, onLiveEvent: (event) => console.log(event),});usePublish — Publish custom events
Section titled “usePublish — Publish custom events”const publish = usePublish(liveProvider);publish({ type: 'UPDATE', resource: 'posts', payload: { id: 1 } });Live Modes
Section titled “Live Modes”| Mode | Behavior |
|---|---|
auto | Automatically invalidates queries on events (default) |
manual | Calls onLiveEvent but doesn’t invalidate — you decide |
off | No subscription |