• 발표주제 : Server-Side와 Client-Side 사이의 연결을 유지한 실시간 웹 개발.
• Server Push -> Mobile Service Push
• What is Realtime Web?
∘ Server push라고 보기는 어렵다.
• Comet(http://en.wikipedia.org/wiki/Comet_%28programming%29)
web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it.
웹서버와 클라이언트가 HTTP request로 긴 접속을 유지하면서, 웹서버에서 클라이언트로 데이터를 보내는 모델.: Ajax처럼 특정기술이 아닌 패턴 : realtime 을 구현하기 위한 패턴
∘ Long Polling
∘ 브라우저가 서버에 요청 -> 서버는 대기(서버 이벤트 발생시까지 대기) -> 응답 -> 연결끊김 반복
∘ Json polling : JSONP :
‣ 필요한 이유 : 동일출처정책 : Same origin Policy
‣ 브라우저에서 도메인당 커넥션 2개 제한
‣ 클릭소리, 로딩바 문제 등의 다양한 문제가 발생한다.
‣ AcitveXObject("htmlFile")
‣ W3C/IETF 표준
‣ WebSocket 프로토콜 사용
‣ 진정한 양방향 통신
‣ HTTP를 업그레이드해서 Socket연결
‣ http 호환 handshake 80/443 으로 동작 : web socked protocol handshake
• server-side
∘ 자바 서버의 문제 : Thread or Request : Request 가 thread가 발생된다. 접속을 유지하게되면 thread가 누적되면서 서버 부하가 발생하게 된다.
∘ Thread 에서 발생하는 문제가 발생하기 시작 : Servlet Container CometServlet
∘ Resin 3.1+ 에서 CometServlet 을 통해서 지원(service, resume[지속적인 커넥션 유지] : boolean 타입)
∘ jetty(suspend, resume)
∘ Tomcat 6.0+ : CometProcessor(http://tomcat.apache.org/tomcat-6.0-doc/aio.html)
∘ Servlet
‣ AsyncContext startAsync();
‣ HttpServletRequest
‣ Servlet 3.0
‣ 비동기 처리....
• Realtime Web application 의 중점
∘ Client Side
∘ Server Side
Server Push와는 다른 형태로, 클라이언트가 서버에 접속을 유지할 수 있도록 Comet이라고 하는 모델을 활용한 웹 애플리케이션을 구동하여 보여주고 소스를 보여주며 개발자들의 흥미를 끌기도 했습니다.
'Programming' 카테고리의 다른 글
[JCO] 5번째 Track : MongoDB with Play! (1) | 2011.06.20 |
---|---|
[JCO] 4번째 Track : Framework Enginering (2) | 2011.06.20 |
[JCO] 2번째 Track : 도메인주도 개발(DDD) (0) | 2011.06.20 |
협업을 하면서 느낀 작은 깨달음 (0) | 2011.06.09 |
110525 표준프레임워크 오픈 커뮤니티 세미나 (1) | 2011.05.25 |