Realtime GraphQL

GraphQL Subscription 전달 흐름

NestJS에서 실시간 GraphQL을 다룰 때는 transport 설정, PubSub 이벤트 이름, 인증 문맥, 수평 확장 전략을 함께 봐야 합니다.

연결

WebSocket Transport

HTTP 요청과 달리 연결이 유지되므로 handshake 단계의 인증과 연결 종료 처리를 고려합니다.

발행

PubSub Event

mutation이나 서비스 작업이 성공한 뒤 의미 있는 이벤트 이름과 payload를 publish합니다.

구독

Subscription Resolver

@Subscription 리졸버는 async iterator를 반환해 해당 이벤트를 기다리는 클라이언트에 데이터를 보냅니다.

확장

Redis PubSub

서버 인스턴스가 여러 개면 메모리 PubSub 대신 공유 브로커로 이벤트를 전파해야 합니다.