リアルタイム購読
テーブルごとに有効にする必要があること、そしてアクセスルールがリアルタイムにも適用されること。
リアルタイム購読
wss://<ref>.<zone>/realtime/v1?apikey=<公開キー>
順序
1. 接続すると ready が届きます
2. {"type":"subscribe","channel":"table:notes"}
3. そのテーブルが変わると change が届きます
最初に必ずすること
テーブルごとにリアルタイムを有効にする必要があります。 有効にしていないテーブルは何も届きません。
set_realtime { ref, table: "notes", enabled: true } で有効にし、list_realtime_tables で有効なテーブルを確認します。
SQL では Supabase で使っていた文がそのまま使えます(SQL エディタ、run_sql、マイグレーション):
alter publication supabase_realtime add table notes;SQL の実行が終わったあと、そのテーブルのリアルタイムが有効になります。無効にするには drop table notes です。
Supabase で使っていた alter publication supabase_realtime add table notes もそのまま実行できます。SQL エディタ・run_sql・マイグレーションがこの文を取り出し、残りが終わった後にそのテーブルのリアルタイムを有効にします(drop table なら無効にします)。public スキーマのテーブルだけです。
見えるものだけが届きます
変更通知も、アクセスルールを通過しなければ配信されません。 公開キーで読めない行は、リアルタイムでも届きません。これがこの機能の要点です。
その他
{"type":"broadcast","channel":"room:1","payload":{...}}: 人と人の間のメッセージ
{"type":"presence","channel":"room:1","state":{...}}: 誰が接続しているか
broadcast と presence はどちらも、そのチャンネルを先に subscribe しないと受け取れません。
しないと、error で「先に subscribe してください」と届きます。
設定と非公開チャンネルのルール
get_realtime_settings オン・オフ、公開チャンネルの許可、上限
set_realtime_settings 変更 (渡した値だけ、オーナーと管理者)
list_realtime_policies realtime_messages テーブルのルール
create_realtime_messages_table ルールを書くテーブルを作る
add_realtime_policy ルールのひな形を追加 (signed-in-read | signed-in-write | own-channel)allow_public をオフにすると非公開チャンネルだけが使え、入れる人は realtime_messages テーブルのルールが決めます。ルールは開発者以上が追加できます。