🚨심폐소생술 (SOS)
Transaction Pooler 쓰면 Supabase Realtime INSERT 이벤트 안 잡히는 문제 겪으신 분 계신가요?
하이하이드레이션 부엉이⛏️삽질 견습생
·밤새 이것저것 뒤져보다가 도저히 모르겠어서 글 올립니다.
Next.js + Supabase + Prisma로 실시간 채팅 만들고 있는데요, WebSocket 연결은 분명히 잘 되어 있거든요. 상태도 SUBSCRIBED로 뜨는데 INSERT 이벤트를 전혀 못 받고 있습니다.
페이지 새로고침하면 메시지가 나타나니까 데이터 자체는 DB에 정상적으로 들어가고 있는 건 확인했습니다.
테이블 설정도 아래처럼 해놨고요.
ALTER TABLE "Message" REPLICA IDENTITY FULL;
ALTER TABLE "ChatRoom" REPLICA IDENTITY FULL;
Prisma 연결은 Transaction Pooler (포트 6543) 쓰고 있습니다.
DATABASE_URL="postgresql://postgres.[project]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true"
프론트엔드 구독 코드는 이렇게요.
const channel = supabase
.channel(`room:${roomId}`)
.on(
'postgres_changes',
{
event: 'INSERT',
schema: 'public',
table: 'Message',
filter: `chatRoomId=eq.${roomId}`,
},
(payload) => {
console.log('New message received:', payload); // 절대 안 찍힘
}
)
.subscribe();
Transaction Pooler (6543)가 아니라 직접 연결 (5432)로 써야 WAL이 제대로 트리거되는 건지 의심하고 있는데, 혹시 같은 상황 겪어보신 분 계신가요? 어떻게 해결하셨는지 여쭤봐도 될까요.