일반적으로 웹에서 필요로 하는 데이터들은 서버에서 관리한다.
네트워크를 통해 서버로부터 데이터를 가져오기 위한 통신 방식은 크게 http통신과 socket통신 2가지가 있다.
client의 요청(Request)이 있을 때만 서버가 응답(response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식이다. 이는 단방향적 통신으로 서버가 클라이언트 쪽으로 요청을 보낼수는 없다.
실제 웹페이지에 들어갔다고 가정하고 예를 들어보자. 어떤 버튼을 클릭한 순간, 클라이언트인 웹은 서버에 그 클릭에 연결된 내용을 보내달라고 요청한다. 그리고 해당하는 내용들을 받은 후 바로 연결을 종료한다. 그러므로 request를 보낼 경우, 내용을 기다리는 시간 + 연결하는 데 들어가는 시간이 소요된다. 그러므로 이러한 통신방식은 콘텐츠 위주의 데이터를 사용할 때 유용하다. 만약 콘텐츠 위주의 데이터를 사용하는데 socket방식의 통신을 사용할 경우 서버에 부하가 걸리기 쉽다. 일반적으로 모바일 앱(android or ios)은 필요한 경우에만 서버로 정보를 요청하는 경우가 많으므로 http 통신을 주로 사용하여 비용 및 유지보수 등에서의 이점을 누리는 것이 좋다.
서버와 클라이언트가 특정 port를 통해 연결하여 실시간 양방향 통신을 하는 방식이다. http통신과 달리 socket통신은 서버 역시 클라이언트로 요청을 보낼 수 있고, 실시간으로 연결이 유지된다.
그러므로 실시간 스트리밍을 통한 중계나 온라인 게임, 채팅과 같이 즉각적인 양방향 정보 교환이 필요한 경우 많이 사용한다. 예를 들어 실시간 동영상 스트리밍 서비스를 http통신 방식으로 구현한다면 사용자가 서버로 동영상을 요청하기 위해 동영상이 종료되는 순간까지 계속해서 http통신 request를 보내야 하고 이는 계속적인 연결 요청으로 인해 과부하가 걸리게 된다. 그러므로 이러한 경우에는 socket통신 방식을 통해 구현하는 것이 적합하다.