实时 Provider
LiveProvider 通过 WebSocket 或 Server-Sent Events 实现实时数据更新。
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>;}内置 Provider
Section titled “内置 Provider”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 实时
Section titled “Supabase 实时”import { createSupabaseLiveProvider } from '@svadmin/supabase';const liveProvider = createSupabaseLiveProvider(supabaseClient);支持通过 Supabase Realtime 广播频道发布事件。
如果你还需要 @supacloud/js 的任务状态订阅,可以使用 @svadmin/supabase/supacloud 里的 createSupaCloudTaskLiveProvider()。它会把 tasks.subscribe() 桥接成标准的 svadmin LiveProvider 接口。
Appwrite 实时
Section titled “Appwrite 实时”import { createAppwriteLiveProvider } from '@svadmin/appwrite';const liveProvider = createAppwriteLiveProvider({ client, databaseId: 'main' });PocketBase 实时
Section titled “PocketBase 实时”import { createPocketBaseLiveProvider } from '@svadmin/pocketbase';const liveProvider = createPocketBaseLiveProvider({ pb });PocketBase 使用基于 SSE 的实时订阅。
useLive — 自动刷新查询
Section titled “useLive — 自动刷新查询”useLive(liveProvider, 'posts', { liveMode: 'auto', // 'auto' | 'manual' | 'off' onLiveEvent: (event) => {}, // 可选回调});useSubscription — 手动频道订阅
Section titled “useSubscription — 手动频道订阅”useSubscription({ resource: 'notifications', liveProvider, onLiveEvent: (event) => console.log(event),});usePublish — 发布自定义事件
Section titled “usePublish — 发布自定义事件”const publish = usePublish(liveProvider);publish({ type: 'UPDATE', resource: 'posts', payload: { id: 1 } });| 模式 | 行为 |
|---|---|
auto | 收到事件后自动刷新查询(默认) |
manual | 触发 onLiveEvent 但不自动刷新 — 由你决定 |
off | 不订阅 |