[GraphQL] Subscription: Realtime, 양방향 통신 서버
요즘 웹사이트 이용하다보면, Socket 통신이 요즘 트렌드 인것 같다. 익숙해져서 일까? GraphQL공부할겸, Todo list를 만드는데,새로고침 해야지만 업데이트가 반영되는 것이 눈에 영 거슬리고, 지나칠 수가 없다. 서버에서 클라이언트로 메시지를 보내기 위해서,GraphQL의 Subscription 이라는 섹션 을 공부했다. 과거에, nodeJS에서는 채팅서버 구현해서, 서비스 해본적이 있었는데,또 다른 library를 쓰니깐, 용어부터, 참 새롭다 Express, Socket.io 조합 에서는 이벤트 리스너를 등록하고, 서버에서 이벤트를 발생시킬 수도 있어서, 직관적이었고, 사용하기 쉬웠다. 그런데, ApolloQL에서는, 서버에서 어떻게 클라이언트로 이벤트를 날리겠다는 건지, 메카니즘이..
2024. 9. 12.
[GraphQL] Link와 Middleware에 대해서
GraphQL을 공부하는 중에, 좀 많이 헤맸다.NodeJS 라던가, Spring이라던가, 내가 일반적으로 접해본, 프레임워크랑 생리가 많이 달라서,진도가 많이 안나갔다.특히, Error 메시지가 분명히 클라이언트로 전달되고 있는 것을 확인하는데, (network tab에서도)비동기 통신을 실행하고 있는 코드까지, 오질 않았다. (참고 https://scribbler-jimmy.tistory.com/60)중간에 Error 메시지가 변경되고 있었는데, 이런 경험은 또 처음해보는 터라 많이 당황했다.그러던 중, 이미 GraphQL문서에, 이러한 상황을 다루는 효과적인 API 들이 있음을 알게되었다. Links최종 endPoint까지 가기 전에, 중간단계에서 필요한 Logic이 실행되는 Middleware ..
2024. 8. 27.
[GraphQL] Error handling, 서버 Response는 array 인데, 클라이언트에선 다른 응답을 받을 때
GraphQL을 공부하고 있는데,Authorization 을 위한, 미들웨어를 달고 있다.쿠키에, JWT 토큰을 검증하는 미들웨어를 달았는데,Error 가 Client레벨에서, 타입이 계속 바뀐다. (Error Type으로 출력이 됨, console에서) 나는, 클라이언트에서 status code 가 401 으로 나올 때, Not Authorized 처리를 하고 싶은 건데,이렇게 나오니, 분기를 할수가 없다. 무슨 이야기인고 하니,산 너머 산인듯처음에는, 구글 Oauth2를 GraphQL 에서 사용해보려고 삽질했는데,넘어오니까, 생각치도 못한 곳에서 에러를 발견하게 된다. ------해결 문제의 해결은, 클라이언트랑, 서버랑 연결할 때 ApolloClient 객체에, link를 설정해주면 됨.apol..
2024. 8. 9.