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로 쓰면 꺼져요. 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 표의 규칙이 정해요. 규칙은 개발자 이상이 더할 수 있어요.