클라이언트(API)와 서버는 데이터 교신(송수신)을 통해 서로 필요한 데이터를 얻게된다.
우리가 사용하는 어플리케이션에 있는 기능마다 효율적인 통신방법이 달라, 알맞게 통신방법을 선택해야 한다.
오늘은 3가지의 통신방법에 대해 정리해보고자 한다.

HTTP는 클라이언트의 요청(Request)이 있을 때만 서버가 응답(Response)하는 단방향 통신 방식이다.
주로 RESTful API에서 사용되는 방식이다.
수많은 연결이 유지되고 있는 상황에서 한 클라이언트가 연결의 사용권한을 가진뒤 단방향 통신을 한 후 연결에서 벗어나는 방식이다.
클라이언트가 먼저 요청을 보내야만 서버가 응답한다.
응답 후 연결이 종료된다. (비연결성)
실시간 통신에는 적합하지 않다.
RESTful API에서 주로 사용한다.

서버에서 클라이언트로 단방향 실시간 이벤트를 전송하는 방식이다.
HTTP 통신에서는 클라이언트만이 서버로 요청을 보낼 수 있기 때문에 서버쪽에서 이벤트를 보내기 위해선 SSE를 사용한다.
서버에서 클라이언트로의 단방향 통신이다.
HTTP 프로토콜을 사용한다.
실시간 업데이트에 적합하다.

WebSocket은 클라이언트와 서버 간의 실시간 양방향 통신을 지원하는 프로토콜이다.
HTTP 헤드에 WebSocket으로의 업그레이드 제안과 암호키를 보내면 서버가 이에 응답하며,
암호키가 일치하면 계속 연결이 유지되는 양방향 WebSocket 연결이 이어진다.
서로의 연결이 이상이 없는지 확인하기 위해 Ping-Pong, Heartbeat등의 연결 응답 요청을 사용한다.
한번 연결이 수립되면 양쪽에서 자유롭게 데이터 전송이 가능하다.
연결이 지속적으로 유지된다. (실시간 통신)
채팅, 실시간 알림 등에 적합하다.
HTTP보다 더 적은 오버헤드가 발생한다.