One Server

ドキュメント

リアルタイム購読

テーブルごとに有効にする必要があること、そしてアクセスルールがリアルタイムにも適用されること。

リアルタイム購読

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 テーブルのルールが決めます。ルールは開発者以上が追加できます。