원래는 Rest API와 GraphQL을 적으려고 했는데, 어떻게 통신이 되는가?
에 대해서 부터 알아야 한다는 생각이 들었다.
그래서 적어보는 HTTP, 그리고 웹소켓에 대한 이야기다.
인터넷 상에서 클라이언트와 서버가 텍스트를 주고 받을 때 사용하는 통신 규약을 HTTP라고 한다.
응답 상태 코드가 꼭 함께 온다
.요청을 하고 응답을 받으면 연결을 끊어버리는 특징이 있다.
일정 시간을 기다렸다가
, 정말 오지 않으면 그때야 연결을 끊어버린다.서버는 클라이언트의 상태를 유지하지 않는다.
이렇게 특징을 한번 봤는데, 이 포스트에서 중요한 것은 비연결성에 있다.
채팅은 두 명 이상의 사람들이 대화를 하게 될 것이다.
하지만 해당하는 사람들이 언제 채팅을 칠지 예측할 수 없는데
이것을 알 수 없기 때문에 끊임없이 HTTP 요청을 보내는 것은 리소스의 낭비가 될 것이다.
그래서 나오게 된 것이 양방향 통신, WebSocket이다.
인터넷 상에서 클라이언트와 서버가 특정 port를 통하여 실시간 양방향 통식을 하는 규약을 WebSocket이라고 한다.
단방향 통신의 HTTP와는 다르게 양방향 통신이라는 특징을 가지고 있다.
이러한 특징을 가지고 있어서 실시간으로 조회라던가 멀티플레이(게임)이 필요한 상황에서는 웹소켓을 사용하여 서비스를 만든다.
하지만 사용자 입장에서는 실시간이 당연히 좋겠지만, 개발자 입장에서는 정말 수많은 문제가 발생할 수 있어서 꼭 다뤄보고 싶은 서비스기도 하다.
node에서는 채팅방을 만들기 쉽게 WebSocket 기반으로 만들어진 Socket.Io가 있어서 금방금방 적용할 수 있다곤 하던데.... 이번 프로젝트때는 작업량이 많아서 손을 대질 못해서 아쉬웠다.
이 다음은 http를 서술했으니 restapi를 작성할 수 있게 됐다!
끝!