用途:本技能提供在命令行环境下使用 Supabase Realtime 的指导,通过 WebSocket 连接监听数据库变更、广播消息和跟踪在线状态(presence)。资料指出,Realtime 操作需要 WebSocket 支持,在 bash 中实现较为复杂,因此内容偏向实用模式与示例。
主要能力:
- 数据库变更订阅:可订阅指定表(如 public.users)的 INSERT、UPDATE、DELETE 或全部(*)事件,并可加 filter(例:status=eq.active)。
- 广播消息(Broadcast):加入频道后可发送和接收广播消息,支持 self 配置。
- Presence 跟踪:加入频道后可 track 与 untrack 在线状态,附带自定义 payload。
必要用法: 环境变量:export SUPABASE_URL="https://your-project.supabase.co";export SUPABASE_KEY="your-anon-or-service-role-key"。 工具依赖:websocat 或 wscat 用于 WebSocket 连接,jq 用于 JSON 处理。安装 websocat(macOS):brew install websocat。 连接方式:将 https:// 替换为 wss://,连接地址形如 ${WS_URL}/realtime/v1/websocket?apikey=${SUPABASE_KEY}&vsn=1.0.0。 订阅消息使用 phx_join 事件,payload.config.postgres_changes 中指定 event、schema、table、filter。
配置前提:需在 Supabase Dashboard 的 Database > Replication 中为要监听的表启用复制,并选择发布的事件类型。Realtime 遵循 Row Level Security 策略,用户只能收到其有权访问的行变更。
适用场景:适合 bash 内的开发与调试工具、简单监控脚本、日志流、实时功能测试。资料明确指出生产级聊天应用、复杂 presence 跟踪、多渠道协调及需要自动重连的场景更适合其他语言(如 Node.js、Python)。
限制:WebSocket 需持久连接管理;bash 并非处理 WebSocket 的理想选择;连接掉线需自行实现重连逻辑;Realtime 受 Supabase 套餐的连接数限制。当 WebSocket 不实用时,可考虑 REST 轮询(示例脚本 poll-changes.sh 基于 supabase-api.sh 与 updated_at 过滤)。
收费、价格与具体平台配额暂未提供。上述功能与参数的详细行为请以 Supabase 官方文档(https://supabase.com/docs/guides/realtime)为准。