수정일자:2014/02/10
정의 및 사용범위
서버 PUSH용으로 사용가능하나 성능이 저하될수 있음을 유의해야함
Polling , Long Polling ,Streaming 의 서버 폴링 방법이 있으며
보통 Long Polling, Strreaming 을 Comet이라한다
Reverse Ajax, Ajax Push, Two-Way-Web, HTTP server PUSH
로 불리기도 한다.
Tomcat,Jetty,Resin 에서의 사용방법은 조금씩 다르며
여기에서는 Tomcat 사용방법에 대해서만 알아봄
설치 및 테스트 환경
Eclipse 에서 Dynamic Web Project
Tomcat 7 서버 구동
설정사항
Tomcat Server의 server.xml 설정
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.HttpNioProtocol" redirectPort="8443" useComet="true" />
사용방법 ※개념적인 형태만 구현 테스트 되지 않은 코드
CometProcessor 구현
public class CometServlet extends HttpServlet implements CometProcessor {
public void init(){}
public void destory(){}
public void event(CometEvent event){
HttpServletRequest request = event.getHttpServletRequest();
HttpServletResponse response = event.getHttpServletResponse();
if(event.getType() == CometEvent.EventType.BEGIN){
System.out.println("Begin Comet!");
}else if(event.getType() == CometEvent.EventType.ERROR){
event.close();
}else if(event.getType() == CometEvent.EventType.END){
event.close();
}else if(event.getType() == CometEvent.EventType.READ){
event.close();
}
}
}
Javascript Ajax 구현 jquery-1.10.2.js
<script type="text/javascript" src="/js/jquery-1.10.2.js"></script>
<script type="text/javascript">
function callComet(){
$.ajax({ type:"POST",
url:CometServlet,
data:param,
dataType:"xml",
success:callBack
error:function(xhr,status,error){
alert("error");
},
complete:function(xhr,status,error){
}
});
}
function callBack(xml){
var data = $(xml).find("data").text();
alert(data);
setTimeout(function(){callComet();},10000}; //loop
}
$(document).ready(function(){
callComet();
});
</javascript>
참고 링크
comet 예제1 http://corund.net/blog/entry/Comet%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
comet 예제2 http://tomcat.apache.org/tomcat-7.0-doc/aio.html
comet 예제3 https://www.ibm.com/developerworks/library/wa-cometjava/
'WEB > JSP' 카테고리의 다른 글
[JSP] request 용 패스 범위 (0) | 2019.01.02 |
---|---|
[JSP] JDBC 커넥션풀 설정/사용 방법 (0) | 2014.02.07 |