메시지를 주고 받는 기능을 만들었으니 이제 받는 기능을 만든다~
프리즈마의 Subscription란 기능을 이용하면 서버가 계속 리스닝하고 있다가 새로운 변화를 감지해줌
Id 에게 ( 로그인 된 대상) 보내진 message를 얻는 것을 할 것.
메세지의 id 는 roomid 이고,
우리에게 보내진 message 또한 subscribe 할 것이다.
프리즈마 서버에서 Subscription을 만들어 보기로 한다
mutation_in은 어떤 mutation을 subscribe할 지 정하는 것인데
새로운 message를 하고 싶으면 create 를 하면 된다
delete,updated 등등.. 할 수 있다.
이번엔 CREATED를 사용한다.
프리즈마 서버에서 테스트하기위해 기존의 룸 아이디를 가져와 테스트를 해보기로 함
서버에서 listening하고 있는 걸 확인
메시지를 보내보면
바로 이렇게 내용이 뜸
많이 보낼수록 노드가 쌓임
이걸 이제 코드로 구현해보기로 한다.
newMessage.graphql
1
2
3
|
type Subscription {
newMessage(roomId : String!):Message
}
|
cs |
newMessage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import { prisma } from "../../../../generated/prisma-client";
export default {
Subscription:{
newMessage:{
subscribe:(_, args) => {
const { roomId } =args ;
return prisma.$subscribe.message({
AND:[
{ mutation_in :"CREATED" },
{
node : {
room:{ id:roomId}
}
}
]
}).node();
},
resolve: payload => payload
}
}
}
|
cs |
'Review > 백엔드 - 인스타그램 클론' 카테고리의 다른 글
Prisma & Graphql 관련 버그 모음 (0) | 2020.02.29 |
---|---|
[Prisma] 메시지 보내기 (0) | 2020.02.18 |
[Prisma] seeFeed Mutation (0) | 2020.02.17 |
[Prisma] @relation onDelete 정의 (0) | 2020.02.17 |
[Prisma & GraphQL] enum 으로 기능 확장해 사용하기 (0) | 2020.02.17 |