supscription 지원 추가
4352 단어 apollo-phoenix-websocket
묘사
계속해서 this issue 구독 지원 추가에 대한 토론을 진행한다.여기에 아폴로/고에주 구독의 예가 하나 있다.그러나 아폴로 측의 구독 지원은 문서가 많지 않은 것 같다.API reference에서 전혀 언급하지 않았다.하나
SubscriptionNetworkInterface
here가 있습니다.그래서 나는 우리가 이 환매 협의에 의해 만들어진 네트워크 인터페이스에 subscribe
와 unsubscribe
방법을 추가해야 한다고 생각한다.아니면 구독을 위한 단독 네트워크 인터페이스를 설정해야 합니까?this repo
토론 #1
를 참고하십시오. 제 첫 번째 추측은subscriptions-transport-ws
는 ws-protocol 부분일 뿐입니다. 웹소켓 연결, 가입 등을 처리합니다(코드를 깊이 연구하지 않았기 때문에 확실하지 않습니다).우리의 예에서, 이것은 phoenix.js
(phoenix가 다중으로 메시지를 전송하는 데 사용하는 작은 프로토콜, 플러그인 심장 박동 등을 처리하는 것) 에 해당한다고 생각합니다. 이번 주에 이것을 볼 시간이 있는지 모르겠지만, 당신의 연구에 매우 감사드립니다.만약 시간이 있다면, 나는 첫 번째 단계는 현지에서 쑥주를 사용하는 예를 말하고, 포엔식스 소켓을 사용하여 클라이언트로부터 무엇을 필요로 하는지 이해할 것이다.
Apollo 구독 문서에 대해 그렇습니다. 그들은
watch
구독(윤문)을 기록했지만 gql 구독을 기록하지 않았습니다. 넷워크 인터페이스를 보십시오. 그러한 subscribe
와 unsubscribe
방법도 넷워크 인터페이스 api의 일부분이 아니지만 이를 실현하고 어떻게 작동하는지 볼 수 있습니다.다시 한 번 감사합니다:)
토론 #2
@vic 피드백에 감사 드립니다!네, 이 저장소를 한층 더 조사한 후에, 나는 그것이 아폴로의 네트워크 인터페이스 층이 아니라는 것을 깨달았습니다.나는 이미 로컬에서 이 예시를 설정했다.나는 여기서 결과를 묘사할 것이다.이 예는
__absinthe__:control
라는 채널을 사용합니다.다음은 가입 메시지입니다.{
"topic": "__absinthe__:control",
"event": "doc",
"payload": {
"query": "\n subscription Messages {\n message(room: \"lobby\") {\n body\n author { name }\n }\n }\n ",
"variables": {}
},
"ref": "2"
}
답변:{
"topic": "__absinthe__:control",
"ref": "2",
"payload": {
"status": "ok",
"response": {
"ref": "__absinthe__:14874113"
}
},
"event": "phx_reply"
}
그리고 돌연변이를 보냅니다.{
"topic": "__absinthe__:control",
"event": "doc",
"payload": {
"query": "\n mutation SendMessage($body: String!, $user: String!) {\n sendMessage(room: \"lobby\", body: $body, user: $user) {\n __typename\n }\n }\n ",
"variables": {
"body": "test message",
"user": "test"
}
},
"ref": "4"
}
다음 답변:{
"topic": "__absinthe__:control",
"ref": "4",
"payload": {
"status": "ok",
"response": {
"data": {
"sendMessage": {
"__typename": "Message"
}
}
}
},
"event": "phx_reply"
}
구독 응답:{
"topic": "__absinthe__:control",
"ref": null,
"payload": {
"data": {
"message": {
"body": "test message",
"author": {
"name": "test"
}
}
}
},
"event": "subscription:data"
}
토론 #셋
그래서 내가 본 유일한 차이점은 조회는'구독'subscription:data
이벤트/방을 조회하고 그 어떠한 결과도 관찰 대상에게 전달해야 한다는 것이다.토론 #4
@conor mac aoidh 구독을 지원하기 위해 코드를 재구성했습니다.feature/subscription
지점에서 볼 수 있습니다. 테스트를 실행해야 합니다. 예시phoenix chat 백엔드에 사용해 보십시오.
Reference
이 문제에 관하여(supscription 지원 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/vic/apollo-phoenix-websocket/issues/7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)