2019. 7. 21. 19:06ㆍ개발
원래 이번 블로그글은 TCP/UDP/HTTP/WebSocket/SocketIO 에 대해 알아보려 했었다. 자료를 찾아보고 정리하던 중 AJAX가 몇번 언급되고, 사내 담당 업무에서 사용하기에 한번 정리해보려 한다.
1. AJAX란? - 에이잭스
( 허저비한 나는 축구팀 아약스가 생각나 무심코 아약스라 부르기도 했다....역시 허저비..)
AJAX - Asynchronos Javascript And XML 이란 길다란 이름을 갖고 있는데, 이름 그대로 비동기(Asynchronos)적으로 자바스크립트(Javascript)와 XMLHttpRequest 객체를 이용한 통신 방법입니다.
2. 왜 사용하는가?
웹페이지는 웹서버를 통해서 렌더된 코드를 전송 받아서 브라우저에서 코드에 따라 화면을 구성하는데, AJAX 이전의 웹브라우저와 웹페이지들은 정적인 상태의 시스템이라 한번 받은 코드로 페이지를 구성하고 변경을 위해서는 "새로고침"이 필요했다.
하지만 AJAX가 도입되면서, 웹브라우저가 비동기적으로 서버와 통신을 하면서, 동적으로 페이지를 변경할 수 있게 되었다. '
예를 들어, 채팅 사이트에서 마음이 맞는 이성을 만났을때, 대화마다 "새로고침"을 한다고 생각하면 얼마나 답답하고, 조급(?)할까 하지만 Ajax를 이용한 채팅 사이트였다면, "새로고침"은 잊고 이성과의 대화에만 집중 할 수 있다. 이처럼 AJAX의 사용으로 사용자에게 동적인 서비스를 제공할 수 있다.
3. AJAX 폴링
ㄱ. 특성
AJAX 폴링은 일정한 주기를 가지고, 서버와 통신을 해서 페이지를 갱신해주는 방법이다. 하지만 커넥션을 계속 유지하는게 아니라 응답-요청 일회성으로 끝나는 웹통신의 특성상, 짧은 주기로 맺고 끊어짐이 반복되는 것은 서버 성능에 부하가 되고, 주기를 길게하면 실시간의 이점을 잃어버리는 상황이 되기 때문에 적절한 주기를 정해주는 것이 좋다.
ㄴ.정리
- 일정 주기로 서버와 비동기적으로 통신한다.
- 주기에 따라 서버에 요청을 하고 응답을 받기 때문에 서버에 부하가 될 수 있다.
4. AJAX 롱폴링
ㄱ. 특성
AJAX 롱폴링은 일정 주기로 서버에 계속 상태를 묻는 방식이 아니라, 서버에게 "나 여기있어요! 그러니 일 생기면 알려줘요!"라고 서버에 요청을 보냄으로써 연결을 맺어놓고, 서버에서 업데이트가 되면 응답을 받는 방식이다. 폴링의 경우 서버에 주기적으로 요청을 해서 상황을 알아야했지만 롱폴링의 경우, 연결을 맺어놓고 서버에서 업데이트가 될 때만 응답을 받기 때문에 폴링에 비해 서버에 부하가 적고, 반응이 빠르다.
ㄴ.정리
- 응답을 요청해서 연결을 맺어놓고, 서버의 업데이트까지 대기하는 방식
- 주기적인 통신보다 서버 부하가 적고, 서버에서 업데이트 되는 것을 바로 받기 때문에 반응이 빠르다.
5. 코멧(Comet)
앞서 알아본 AJAX의 폴링과 롱 폴링과 같은 실시간 웹 서비스를 위한 기술을 코멧(Comet)이라고 한다. 코멧에는 polling, long polling, stream 방식이 존재한다.
참고
http://tkjeon.tistory.com/entry/Jquery-%ED%8F%B4%EB%A7%81Polling-%EA%B8%B0%EB%B2%95
http://wherethelightis.tistory.com/14
https://opentutorials.org/course/1375/6843
'개발' 카테고리의 다른 글
Boost 기반 CustomObjectPool 개발하기 (0) | 2019.08.01 |
---|---|
C++ 기초 이론 ( 복습용 ) - 2 (0) | 2019.07.21 |
저장 프로시저(Stored Procedure) (1) | 2019.07.21 |
C++ 기초 이론 ( 복습용 ) - 1 (0) | 2019.07.21 |
MySQL - Connector / C++ 8.0 이용한 포트폴리오 작업(미완성) (0) | 2019.07.09 |