2012-03-09 2 views
1

채팅 룸에 대한 긴 폴링 또는 보류중인 요청을 구현해야합니다. 나는 a4j : push를 시도했지만 실제 긴 폴링 접근 방식처럼 작동하지 않는 것 같습니다 (다음 토론 참조 : https://community.jboss.org/message/16614).JSF 용 긴 폴링 (대기중인 요청)

질문 : 어떤 대안을 사용하여 긴 폴링을 실현해야합니까?

저는 JSF 1.2, JAVA EE 6 및 RichFaces 3.3.2를 사용하고 있습니다.

미리 타크!

답변

1

RichFaces의 a4j:poll 구성 요소를 사용해야합니다. exadel live demo에는 아주 좋은 샘플이 있으며 주요 특성을 설명합니다. 또한 official documentation에서 더 많은 정보를 얻을 수 있습니다.

아마도 채팅 구현 예제를보고 폴링하지 않으려합니다. 그것에 대해 의심의 여지가 : netty-socketio 자바 프로젝트를 사용하는

https://stackoverflow.com/a/1577486/1065197

+0

안녕하세요, 감사합니다. 오해가되어야합니다. 긴 폴링 중에는 클라이언트가 서버의 리소스를 요청하고 서버가 응답하지 않거나 데이터가있을 때까지 연결을 닫는 http를 통해 서버를 구현하는 방법을 의미했습니다. 반환 또는 지정된 시간이 경과합니다. 서버가 응답하거나 연결을 닫은 후 클라이언트는 일정 시간 대기 한 다음 다시 연결하고 프로세스가 반복됩니다. – golinko

+1

그리고 a4j : poll과 a4j : push가 주기적으로 서버에 요청을 보내고 (이것은 매 초마다라고 말합니다) 클라이언트의 수가 수백 명인 경우 서버에 매우 중요 할 수 있습니다. – golinko

+0

'a4j : poll' 태그 구성 요소는 표시 할 결과가있는 경우 클라이언트가 서버에 요청하기 위해 기다려야하는 시간을 구성 할 수 있습니다. 라이브 exadel 데모는 클라이언트가 0.5 초마다 서버를 폴링하여 "날짜 및 시간 표시"작업을 수행하는 것을 보여줍니다. –

0

봅니다. 긴 폴링 지원이 있습니다. jsf 페이지에 Socket.IO client javascript lib를 사용하십시오.

자바 스크립트 LIB 사용 예 : 답변

<script type="text/javascript"> 
    var socket = io.connect('http://localhost:81', { 
     'transports' : [ 'xhr-polling' ], 
     'reconnection delay' : 2000, 
     'force new connection' : true 
    }); 
    socket.on('message', function(data) { 
     // here is your handler on messages from server 
    }); 

    // send object to server 
    var obj = ... 
    socket.json.send(obj); 
</script>