본문 바로가기

Network

푸시통지(Push Notification)

폴링과 콜백

일반적으로 상태를 알아오기 위한 방법에는 크게 두가지 방법이 있다.

하나는 상태를 주기적으로 조사를 해서 알아오는 것이고, 다른 하나는 상태를 알고 있는 주체(리스너)에게 알려 달라고 이야기(등록) 한 후 리스너가 알려주는 방식이다.

전자를 폴링(polling)이라고 하고 후자를 콜백(call-back)방식이라고 한다. 또한 후자를 비동기(asynchonous)적인 방법이라고 한다. 인터넷 분야에서는 전자를 pull technology, 후자를 Push technology라고 하기도 하는 것 같다.(서버관점에서)

폴링의 경우에는 궁금한 놈이 바쁘게 일하는 방식이다. 문제는 일을 계속해야 한다는 점이다. 근데 일을 하는 것 자체가 부하가 된다.

 

실생활의 예를 들어보자.

집에 중요한 택배를 시켜놓고 왔다. 다행히 집에 어머니가 계셔 전화로 물어보니 아직 안왔다고 한다.

폴링의 경우라면 1시간 마다 집에 전화를 걸어 택배가 왔는지 물어보는 방법을 취할 수 있겠다. 엄마가 3시간 후에는 짜증을 낼 수도 있다.(부하)

콜백방식을 쓴다면, 한번 집에 전화를 걸어 어머니에게 혹시 택배가 오면 사무실로 전화를 해달라고 요청을 하기만 하면 된다. 사무실에서 일을 하다가 전화를 받아서 택배가 온 상황을 통보받으면 되는 것이다.

 

푸시서버(Push notification server)

카카오톡 등의 웹 기반의 실시간 채팅 어플리케이션은 서버가 클라이언트(예. 스마트폰)에게 알려줄 정보(예. 메시지)가 있을 경우 실시간으로 알려주어야 할 필요가 있다.

 

[카카오톡은 Push 서버와의 연결 상태를 보여주는 상태란이 있다. 연결이 안되어 있을 경우에는 주기적으로 연결을 하는 것으로 보인다]

 

이것 말고도 백신 소프트웨어는 주기적으로 자동업데이트를 하는데, 긴급한 악성 코드가 돌아 즉시 백신 업데이트를 해줄 필요가 있을 경우에 서버가 클라이언트에게 통지를 주는 방식을 사용한다면 업데이트 주기를 줄일 수 있을 것이다.

 

관련 외부 포스트들

Comet (programming) Wikipedia : http://en.wikipedia.org/wiki/Comet_(programming)

Asynchronous HTTP and Comet architectures :  http://www.javaworld.com/javaworld/jw-03-2008/jw-03-asynchhttp.html

Play framework에서 Long Polling 구현하기

 

점프와 쉼없는 나아감 : Comet에 대하여 (or http://corund.net/blog/tag/comet)

봉쥬르(kbat73)님의 네이버 블로그 : DWR - Reverse Ajax part1 :: Piggyback, Polling, Comet

 

 

HTML5 Server-Push Technologies, Part 1 / HTML5 Server-Push Technologies, Part 2

 

APNS :

 [iPhone/Java] 내가 만든 어플에 Push Notification 적용하기 : http://theeye.pe.kr/421

 

동우 왈

Redis

http://rediscookbook.org/pubsub_for_synchronous_communication.html

http://simonwillison.net/static/2010/redis-tutorial/

 

varnish - HTTP accelerator

tomcat / redis

Windows (with Cygwin DLL by POSIX system call API) : https://www.varnish-cache.org/trac/wiki/VarnishOnCygwinWindows

nginx cache (엔진-X) - 웹 서버, 리버스 프록시 및 메일 프록시 기능

10,000 inactive HTTP keep-alive connections take about 2.5M memory

http://www.kevinworthington.com/nginx-for-windows/

 NGXMP: http://www.dev.naver.com/projects/ngxmp

with Java Servers: Jetty, GlassFish, Tomcat : http://wiki.nginx.org/JavaServers

Tomcat과의 연동: http://www.tuning-java.com/194

LightTPD

 WLMP Project : http://en.wlmp-project.net/

 

ICEfaces: http://www.icefaces.org/main/community/projects-async.iface

 

Jetty

Asynchronous HTTP Server

Web Sockets server

 

GlassFish >> Project Atmosphere : http://atmosphere.java.net/

<- Atmosphere Framework: REST and Comet

APACHE SHIRO : http://shiro.apache.org/10-minute-tutorial.html

'Network' 카테고리의 다른 글

Web Socket(웹소켓)  (0) 2012.09.21
톰캣 - Comet  (0) 2012.09.21
ARP(Address Resolution Protocol)  (0) 2012.09.21
윈도우 - 네트워크 탐색  (0) 2012.09.21
TIME_WAIT  (0) 2012.09.21