- GraphQL의 오랫동안 지속되는 read operation 으로 서버에 있는 것이 무엇이든 항상 listen 하도록 해줌
- 조건이 충족하면 push
- 가장 필요한 조건은 Pubsub Class(PubsubEngine,public subscribe engine)가 있어야 한다는 점
- 다만 실제 개발에서는 사용을 추천하지 않음
코드 예시
export default gql`
type Subscription {
roomUpdate:Message
}
`
- resolver에서는 subscribe 함수를 추가해줘야 함
export default {
Subscription: {
roomUpdates: {
subscribe: () => pubsub.asyncIterator(NEW_MESSAGE),
},
},
};
- subscription은 언제 써야 할까?
- 큰 규모의 object는 작지만 계속적으로 증가하는 변화가 있을 때
- 저지연의 실시간 업데이트가 필요할 때
- withFilter
- 이벤트를 어떻게 필터할 것인지
``` javascript
subscribe: withFilter(
() => pubsub.asyncIterator(NEW_MESSAGE),
({ roomUpdates }, { id }) => {
return roomUpdates.roomId === id;
}
),