You need to enable JavaScript to run this app.
文档中心
AI 原生 BaaS 平台 Supabase 版

AI 原生 BaaS 平台 Supabase 版

复制全文
下载 pdf
使用 Realtime
使用 Realtime
复制全文
下载 pdf
使用 Realtime
本文介绍不同角色使用 Realtime 功能模块的方式与方法。​
背景信息​
Supabase 控制台通过 Realtime 组件提供实时消息通信和消息广播能力。客户端与 Realtime 之间通过 WebSocket 建立连接,结合 PostgreSQL 数据库自带的逻辑复制 Slot 和 Trigger 触发器,并监听 Realtime 的 messages 系统表变更,可以将数据库中的记录更新实时推送到多个客户端。​
在 Supabase 控制台调试 Realtime 订阅​
前提条件​
  • 已创建使用 Supabase 引擎的 Workspace 且 Workspace 的状态为运行中。关于创建 Workspace 的更多详细信息,请参见创建 Workspace。​
  • 已通过目标 Workspace 成功登录 Supabase 控制台。关于登录控制台的详细信息,请参见登录 Supabase 控制台。​
操作步骤​
  1. 在 Supabase 控制台单击左侧的 Realtime,进入 Realtime 页面。​
  1. 在 Realtime 页面,选择 Channel 和 Role 后,即可开始对指定 Channel 的监听。​
说明​
在 Realtime 页面,您还可以进行为监听配置过滤、发起广播等操作。更多详细信息,请参见 Realtime。​
通过 Supabase Client SDK 创建 Realtime 订阅​
前提条件​
已获取 SUPABASE_BASE_URL、SERVICE_ROLE_KEY 和 SUPABASE_ANON_KEY。关于获取变量的详细信息,请参见获取变量。​
操作步骤​
  1. 订阅 Database changes。​
​
import { createClient } from '@supabase/supabase-js'​
const supabase = createClient(​
"<SUPABASE_BASE_URL>",​
"<SUPABASE_ANON_KEY>")​
​
// 订阅数据库表变化​
const channel1 = supabase.channel('db-channel')​
channel1​
.on('postgres_changes', {​
event: '*',​
schema: 'public',​
table: 'mytable'​
}, payload => {​
console.log('mytable changed: ', payload)​
})​
.subscribe()​
​
  1. 订阅 Broadcast。​
​
// 订阅广播消息​
const channel2 = supabase.channel('broadcast-channel')​
channel2​
.on('broadcast', { event: 'message' }, payload => {​
console.log('received: ', payload.payload)​
})​
.subscribe()​
​
// 发送消息​
channel2.send({ type: 'broadcast', event: 'message', payload: 'hello' })​
​
  1. 订阅 Precense。​
​
// 订阅在线状态​
const channel3 = supabase.channel('presence-channel')​
​
channel3​
.on('presence', { event: 'sync' }, () => {​
const state = channel3.presenceState()​
console.log('在线用户', state)​
})​
.on('presence', { event: 'join' }, ({ key }) => {​
console.log(key + ' 上线了')​
})​
.on('presence', { event: 'leave' }, ({ key }) => {​
console.log(key + ' 下线了')​
})​
.subscribe(async status => {​
if (status === 'SUBSCRIBED') {​
await channel3.track('user123', { name: '测试用户' })​
}​
})​
​
最近更新时间:2026.03.30 11:08:50
这个页面对您有帮助吗?
有用
有用
无用
无用