*리얼타임 웹을 위한 기법으오 일정한 주기를 가지고 서버와 응답을 주고받는 방식이 폴링방식이다. 이는 Ajax Polling이라고도 불리는데 주로 Ajax호출을 사용하기 때문이다. 하지만 이 폴링기법은 두 가지 문제가 있는데, 폴링 주기에 관한 문제로 주기가 짧으면 서버의 성능에 부담이 가고, 주기가 길면 실시간 성능이 약간 떨어지는 문제가 있다. 그래서 이 폴링의 지연을 최대한 줄이기 위해 comet을 구현하는 방법이 있고 이 방법 중에 하나가 롱폴링기법이있다. 이 롱폴링 방식은 서버 측에서 접속을 열어두는 시간을 길게 하는 방식이다. 롱폴링 에서는 이벤트가 발생하면 바로 응답이 이루어지기 때문에 실시간성이 아주 높으며,스트리밍 방식과 달리 웹브라웆 환경에 관계없이 사용할 수 있기 떄문에 흔히 사용하는 방식이다. 롱폴링 방식외에 스트리밍 방식이 있는데 이 스트리밍 방식은 하나의 웹 요청에 대해 웹 접속을 계속 열어두고, 새로 이벤트가 발생하면 발생할 때마다 부분적인 응답으로 브라우저로 보내는 방식이다. -간단한 구현 - 쓸모없는 요청-응답 때문에 많은 트래픽이 낭비됨 - 반복하는 주기가 짧지 않은 경우 , 폴링기법 추천 (예: 페이스북 웹채팅에서 사용자 리스트 갱신주기 1분-폴링기법 사용) -서버에서 커넥션을 물고 기다리고 있으며, 이벤트의 업데이트가 있을 경우 클라이언트로 응답을 준다. - 구현기술 - iframe : 구현이 쉬우나 로딩이 표시되고 크로스 도메인을 지원하지 않음 - htmlFile : IE 에서만 동작함 - JSONP : 대중적인 사용방식, 크로스도메인 문제 해결 - XmlHttpRequest : 크로스 도메인을 지원하지 않음 <폴링방식과 롱폴링 방식 선택하기> Long-Polling 방식을 선택해야 하는 경우 약 3초간의 오차로 실시간 응답이 필요한 경우 메신저 같이 1:1이나 약 10명 이하의 상대와 채팅하는 경우
웹 소켓은 단일 소켓을 통해서 풀듀플렉스(full-duplex) 통신을 제공하는 프로토콜이다. 웹 브라우저오 서버간의 비동기 메시징을 활성화한다. 풀 듀플렉스는 서버가 브라우저에 메시지를 전송할 수 있고, 브라우저도 서버에 메시지를 전송할 수 있음을 의미한다. 스프링4.0은 웹 소켓 통신을 지원하며, 다음을 포함한다. 메시지 전송과 수신을 위한 하위 레벨 API 스프링 MVC 컨트롤러에서의 메시지 처리를 이한 상위 레벨 API 메시지 전송을 위한 메시징 템플릿 브라우저, 서버, 프록시에서 웹 소켓 지원 부족을 지원하기 위한 SockJS 1. 스프링의 하위 레벨 웹 소켓 API사용하기 간단한 형태로 웹 소켓은 두 애플리케이션 사이의 통신 채널이다. 풀 듀플렉스이므로 양쪽 종단은 메시지를 전송할 수 있고, 다른 쪽은 그 메시지를 받아서 처리한다. 웹 소켓 통신은 여러 종류의 애플리케이션 사이에서 사용될 수 있다. 그러나 웹 소켓의 대부분은 서버와 브라우저 기반 애플리케이션 사이의 통신을 용이하게 하기 위해서 사용된다. 브라우저에서의 자바스크립트 클라이언트는 서버에 대한 연결을 오픈하고, 서버는 그 연결을 통해 브라우저에 업데이트하라고 보낸다. 이러한 방법은 업데이트를 위해 서버를 폴링(Polling)하는 일반적인 방식보다 더 효율적이며, 좀 더 자연스럽다. 하위 레벨 웹 소켓을 지원하기 위해서 스프링에서 메시지를 처리하고, WebSocketHandler를 구현한 클래스를 작성한다. public interface WebSocketHandler{ void afterConnectionEstablished(WebSocketSession session)throws Exception; void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception; void handleTranspor
댓글
댓글 쓰기