서버와 클라이언트의 실시간 커뮤니케이션 방법들

AJAX

서버가 요구하는 header와 여러 데이터 옵션들을 붙여서 요청을 받고 응답을 받는 방식의 비동기 통신. 거의 모든 브라우져가 지원하고 있다.

Long poll

AJAX와 비슷한 방식이지만 요청을 하고 대기, 응답를 하는 형태를 가지고 있는데 차이점은 Connection이 계속 열려있는 상태를 유지하고 그 동안 데이터들을 주고받는다는 것이다. 연결을 유지하기 위해 확인을 하는 요청(Alive Check)을 보내서 연결을 지속적으로 유지하는게 특징이다.

WebSockets

HTML5가 나타나면서 생긴 프로토콜이다. 서버와 TCP 방식으로 연결하고 오랫동안 연결을 유지가 가능하다. 서버에 핸드쉐이크를 성공하면 언제든 바로바로 양방의 데이터의 교환이 가능하다. 이것은 서버와 클라이언트가 굉장히 잦은 통신으로 실시간이 가능한 방법이다. 브로드캐스팅도 가능해서 여러명에게 실시간으로 데이터를 전송해줄 수도 있다. 데이터엔 암호화가 되어 통신한다. 가장 많이 사용하는 웹소켓 엔진으로는 socket.io 인것 같다. 지원하는 브라우져들

WebRTC

구글에서 발표한 오픈소스 프로젝트로 실시간 비디오 오디오의 스트리밍이 가능하다. 가장큰 장점으로는 별도의 플러그인이 필요없이 브라우저를 통해서 가능하다는 것이지만 지원되는 브라우저가 한정되어있다. 아직도 많이 참여하고 있는 기술인듯 하다. 지원하는 브라우져들

Server-Sent Event

서버에서 클라이언트로 이벤트를 보내는 HTML5의 기술이다. 양방향 지원의 Websocket과는 다르게 서버에서 클라이언트에게로만 이벤트를 줄 필요가 있을 때 사용하면 된다. SSE 는 거의 모든 브라우저에서 지원하지만 IE에서는 지원하지 않아서 별도의 Polyfill라이브러리를 사용해서 해야한다. 지원하는 브라우져들