实时

MemFire Cloud提供一个全球分布的实时服务器集群,实现了以下功能:

  • 广播:以低延迟的方式从客户端向客户端发送短暂的信息。
  • Presence:跟踪和同步客户端之间的共享状态。
  • Postgres CDC:听取Postgres数据库的变化,并将其发送给授权客户。

实时 API#

默认情况下,数据库上的实时处于禁用状态。让我们为todos表打开实时。

  1. 转到 应用 中的 Database 页面。
  2. 单击侧边栏中的 Replication.
  3. 通过切换Insert, UpdateDelete来控制发送的数据库事件。
  4. 通过选择Source并切换每个表来控制哪些表广播更改。

在客户端中,我们可以监听插入到 todos 表中的任何新数据:

1// Initialize the JS client
2import { createClient } from '@supabase/supabase-js'
3const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY)
4
5// Create a function to handle inserts
6const handleInserts = (payload) => {
7  console.log('Change received!', payload)
8}
9
10// Listen to inserts
11supabase
12  .channel('todos')
13  .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'todos' }, handleInserts)
14  .subscribe()

使用 subscribe() 侦听数据库更改。 Realtime API 通过 PostgreSQL 的publication功能工作。Postgres 将数据库更改发送到发布 称为supabase_realtime,通过管理此发布,您可以控制广播哪些数据。