2011-08-11 2 views
1

누군가가 아약스 푸시가 무엇인지 설명 할 수 있습니까? 내가 이해하는 바로는 HTTP 연결을 오랜 시간 동안 열어 두었다가 필요에 따라 다시 연결하는 것입니다. 그것은 채팅 시스템에서 많이 사용되는 것 같습니다.아약스 푸시 란 무엇입니까? 일부 서버에서이를 사용하는 것에 대한 경고가 있습니까?

자바에서 아약스 푸시를 사용할 때 NIO- 연결자 또는 grizzle serlvet API를 사용하는 것이 중요하다고 들었습니까? 다시 말하지만, 나는 정확히 무엇을 연구하고 있습니다.

+0

_See 또한 [Push Technology] (http://en.wikipedia.org/wiki/Push_technology) ._ [및 Google] –

답변

4

정상적인 AJAX (이라고 함)에서는 서버에 무언가를 요청하면 즉시 얻을 수 있습니다. 서버에서 데이터를 가져 오려는 경우이 메시지가 유용합니다. 입니다. 그러나 서버에서 무언가가 발생하고 서버가 을 요청하면 이벤트를 클라이언트로 보내려면 어떻게해야합니까?

기술적으로 이는 롱 폴링으로 구현됩니다. 브라우저는 HTTP 연결을 열고 응답을 기다립니다. 서버 측에서 흥미로운 부분이없는 한 기다립니다. 그러나 무언가가 발생하면 서버는 응답을 보내고 클라이언트는 즉시을받습니다. 이것은 몇 초마다 서버에 질문하는 일반적인 폴링보다 큰 장점입니다. 많은 트래픽을 생성하고 눈에 띄는 대기 시간을 유발합니다.

이 접근 방식의 유일한 문제점은 보류중인 HTTP 연결 수입니다. 올드 스쿨 Java 서블릿 컨테이너는 연결 당 한 스레드 당 제한으로 인해 이러한 양의 연결을 처리 할 수 ​​없습니다. HTTP 스레드는 시스템의 다른 부분이 시스템을 깨우고 응답을 기다리는 동안 아무 것도하지 않고 있지만 메모리를 차지합니다.

  • 톰캣 NIO connectors

  • Atmosphere 아약스 푸시/

  • 서블릿 3.0 @Async (대부분의 휴대용) 혜성 라이브러리

  • 컨테이너 :

    그러나 현재 솔루션의 많음이있다 특정 기능이지만 Servlet 3. 가능한 경우 0을 우수로 간주해야합니다.