티스토리 뷰
안녕하세요 강정호입니다.
오늘은 newMessage Subscription API 개발을 해보겠습니다.
Graphql Subscription(구독) 이란?
특정 이벤트가 발생했을 때 서버가 클라이언트에게 데이터를 전송해주는 Graphql 기능입니다.
클라이언트는 구독을 설정하여 서버와의 연결을 지속하고, 특정 이벤트 발생시에 서버에서 클라이언트로 데이터를 푸쉬하게 합니다.
(참고 : velog.io/@cadenzah/graphql-node-08-subscription)
(참고2 : www.howtographql.com/graphql-js/7-subscriptions/)
newMessage.graphql
type Subscription {
newMessage(roomId: String!): Message!
}
newMessage를 구독하고 이벤트가 발생할 때마다 신규로 생성된 Message 객체를 푸쉬 받기 위한 것.
newMessage.js
import { prisma } from "../../../../generated/prisma-client";
export default {
Subscription: {
newMessage: {
subscribe: (parent, args, {request, isAuthenticated}, info) => {
const { roomId } = args;
//Message를 Subscription 하게 되면 매개변수들이 필요하다
// mutation : CREATED, DELETED, UPDATED 작업 중 어떤 이벤트가 발생했을 때 푸쉬할 지
// node : 이벤트 조건 설정. Room id에 해당하는 것에서 Message가 생성되었을 때.
return prisma.$subscribe.message({
AND: [
{mutation_in: "CREATED"},
{
node: {
room: {id: roomId}
}
}
]
}).node();
},
resolve: payload => payload
}
}
}
아래의 MessageSubscriptionPayload 함수의 매개변수를 확인할 수 있다. 실제로 Message 구독에 필요한 조건은 mutation과 node여서 2개의 매개변수만 입력하여 개발하였다.
'프로젝트' 카테고리의 다른 글
[인스타그램 클론코딩] #4.1 GlobalStyle and Theme (0) | 2020.10.06 |
---|---|
[인스타그램 클론코딩] #4.0 create-react-app cleanup and installation (0) | 2020.09.28 |
[인스타그램 클론코딩] #3.26 seeRoom Resolver (0) | 2020.09.23 |
[인스타그램 클론코딩] #3.21 editPost deletePost Resolver (0) | 2020.09.18 |
[인스타그램 클론코딩] #3.19 upload Resolver (0) | 2020.09.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- github
- 관계대수
- docker
- front
- 도커
- 폭포수
- 월부닷컴
- 깃허브
- 깃
- 열반스쿨기초반
- 항해플러스후기
- 2023년
- 부동산공부
- pop_back
- 개발자 회고
- 내년은 빡세게!!
- Inception
- Use case
- 재테크공부
- 월급쟁이부자들
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 파라메터
- 유즈케이스
- Spring boot
- resize
- GIT
- 인셉션
- push_back
- 항해플러스백엔드
- 항해솔직후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함