• 발표자 : 박용권 , 변정훈

NIKON CORPORATION | NIKON D80 | 2011:06:19 14:07:39


• 발표주제 : Server-Side와 Client-Side 사이의 연결을 유지한 실시간 웹 개발.

• 발표내용 : Server Push 기술을 Comet과 WebSocket을 이용하여 구현하는 방법..이랄까?
• Server Push -> Mobile Service Push

NIKON CORPORATION | NIKON D80 | 2011:06:19 14:12:45

• What is Realtime Web?
∘ http://springsprout.org:10000/

NIKON CORPORATION | NIKON D80 | 2011:06:19 14:12:51


client-side : Polling : 브라우저 에서 요청 -> 서버에서 응답 , 서버에서 이벤트 발생시, 브라우저가 요청하면 이벤트 내용을 바로 전달
∘ Ajax를 이용해서 polling 을 전달, 서버에서 변경사항 발생시 클라이언트의 지연시간 여부에 따라서 부하가 발생할 수가 있다.
∘ Server push라고 보기는 어렵다.

NIKON CORPORATION | NIKON D80 | 2011:06:19 14:17:52


• Comet & Web Socket
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 lived Http connection : http 연결 상태 장기 지속
∘ Long Polling
∘ 브라우저가 서버에 요청 -> 서버는 대기(서버 이벤트 발생시까지 대기) -> 응답 -> 연결끊김 반복
∘ Json polling : JSONP :
‣ 스크립트 태그로 호출,
‣ 서버에서 콜백함수로 JSON 객체로 리턴
‣ 필요한 이유 : 동일출처정책 : Same origin Policy
‣ 브라우저에서 도메인당 커넥션 2개 제한
∘ Streaming : 일반적인 Server Push에 가깝다.
‣ 브라우저에서 요청 -> 서버에서 대기하다가 이벤트 발생할때마다 응답해줌(Connection이 지속됨)
‣ Chunked : Transfer-Encoding : 전체 데이트는 알 수 없지만 Chunked 단위로만 받을 수 있음.
∘ IE는 Chunked 를 지원하지 않습니다. -> Forever IFrame
‣ 웹페이지에서 hidden iFrame 을 두고서  서버에 요청 -> 서버에서 Chunked Data<script>데이터></scipt>
‣ iFrame 에서 Script가 계속 발생하는 문제가 발생
‣ 클릭소리, 로딩바 문제 등의 다양한 문제가 발생한다.
‣ AcitveXObject("htmlFile")
∘ WebSocket
‣ HTML5
‣ W3C/IETF 표준
‣ WebSocket 프로토콜 사용
‣ 진정한 양방향 통신
‣ HTTP를 업그레이드해서 Socket연결
‣ http 호환 handshake 80/443 으로 동작 : web socked protocol handshake
∘ Adobe flash socket

NIKON CORPORATION | NIKON D80 | 2011:06:19 14:38:21


server-side
∘ 클라이언트와의 지속적인 연결(persistent connection)이 유지되어야 한다.
∘ 자바 서버의 문제 : 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
‣ <async-suspend>true</async-suspend> 처리를 하여 비동기 처리를 하겠다는 설정
‣ AsyncContext startAsync();
‣ HttpServletRequest
‣ Servlet 3.0
‣ 비동기 처리....
∘ WebS

• Realtime Web application  의 중점
접속(Connection)의 지속적인 유지(Long Connection)를 위한 기술들이 필요하다.
∘ Client Side
∘ Server Side


  발표자들이 생각했던 것보다 많은 청중이 몰려와 자리가 없어서, 발표장 앞쪽에 앉아서 발표를 경청했습니다. 꽤 많은 준비를 했고, 청중들이 모바일 접속을 하여 함께 참여할 수 있는 기회를 제공함으로 해서, 청중들의 관심을 불러일으키는데 성공한 좋은 발표였습니다.
  Server Push와는 다른 형태로, 클라이언트가 서버에 접속을 유지할 수 있도록 Comet이라고 하는 모델을 활용한 웹 애플리케이션을 구동하여 보여주고 소스를 보여주며 개발자들의 흥미를 끌기도 했습니다.



  1. 2011.06.21 14:41

    비밀댓글입니다

    • 찾아주셔서 감사합니다. ^^

      조만간 JCO 에도 세미나 발표자료가 올라올 겁니다.
      Realtime 같은 경우는
      http://blog.outsider.ne.kr/656
      에 발표자료를 올려두셨으니 참고하세요. ^^

+ Recent posts