Comet4j

6365 단어 Comet
Comet4J (Comet for Java) 는 단순히 AJAX (XML HTTPRequest) 를 기반 으로 한 서버 푸 시 프레임 워 크 로, 메 시 지 는 JSON 방식 으로 전달 되 며, 긴 폴 링, 긴 연결, 자동 선택 세 가지 작업 모드 를 갖 추고 있다.
아래 사이트 주 소 는 다운로드 할 수 있 습 니 다:
http://code.google.com/p/comet4j/
 
 
준비 작업 1. 서버 jar 파일 다운로드    Comet4J 는 현재 Tomcat 6, 7 버 전 만 지원 합 니 다. 사용 하 는 Tomcat 버 전에 따라 comet4j - tomcat 6. jar 또는 comet4j - tomcat 7. jar 를 다운로드 합 니 다.2. 클 라 이언 트 js 파일 을 다운로드 하여 coet4j. js 를 프로젝트 에 다운로드 합 니 다.3. 서버 프로필 수정    Comet4J 는 NIO 방식 으로 작 동 하기 때문에 서버 커 넥 터 설정 을 조정 하고 NOI 커 넥 터 로 바 꿔 야 합 니 다.
    server. xml 파일 을 열 면 원래 의 커 넥 터 설정 을 찾 을 수 있 습 니 다:    
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

     다음으로 바 꾸 기:   
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080"  protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

 
* 메모: NIO 방식 과 BIO(Socket) 방식 의 가장 큰 차이 점 은 NIO 가 하나의 요청 스 레 드 이 고, BIO 는 하나의 스 레 드 를 연결 하 는 것 입 니 다. 후 자 는 서버 가 미래 에 응답 클 라 이언 트 를 받 으 면 계속 기 다 려 야 합 니 다. 이 연결 은 이 스 레 드 를 계속 사용 하고 있 습 니 다. NIO 라면 다시 연결 할 수 있 습 니 다. 즉, 서버 측의 응답 을 기다 리 지 않 아 도 서버 측 에 메 시 지 를 계속 보 낼 수 있 습 니 다.전송 과 수신 은 비동기 응답 입 니 다.
 
웹. xml 에 Comet4J 프레임 워 크 불 러 오기
마지막 으로 우 리 는 웹. xml 에서 검색 과 comet 연결 주 소 를 설정 하여 Comet4J 를 발효 시 켜 야 합 니 다.
<listener>
    <description>Comet4J    </description>
    <listener-class>org.comet4j.core.CometAppListener</listener-class>
  </listener>
  <servlet>
    <description>Comet  [  :org.comet4j.core.CometServlet]</description>
    <display-name>CometServlet</display-name>
    <servlet-name>CometServlet</servlet-name>
    <servlet-class>org.comet4j.core.CometServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CometServlet</servlet-name>
    <url-pattern>/conn</url-pattern>
  </servlet-mapping>

 여 기 는 최소 화 설정 입 니 다.
 
HelloWorld:
 
저 희 는 Comet4J 를 이용 하여 모든 클 라 이언 트 에 게 서버 의 남 은 메모리 크기 를 1 초 간격 으로 개발 합 니 다. helloworld. html
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>Comet4J Hello World</title>
<scripttype="text/javascript"src="js/comet4j-0.0.2.js"></script>
<scripttype="text/javascript">
function init(){
        var kbDom = document.getElementById('kb');
        JS.Engine.on({
                hello :function(kb){//    channel
                      kbDom.innerHTML = kb;
                }
        });
        JS.Engine.start('conn');
}
</script>
</head>
<body onload="init()">
            :<span id="kb">...</span>KB
</body>
</html>

 
서버
 helloworld.java
 
package org.comet4j.demo.helloworld;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;

 import org.comet4j.core.CometContext;
 import org.comet4j.core.CometEngine;

 public class HelloWorld implements ServletContextListener{
        private static final String CHANNEL ="hello";
        public void contextInitialized(ServletContextEvent arg0){
                CometContext cc =CometContext.getInstance();
                cc.registChannel(CHANNEL);//     channel
                Thread helloAppModule =newThread(newHelloAppModule(),"Sender App Module");
                helloAppModule.setDaemon(true);
                helloAppModule.start();

        }

        class HelloAppModule implements Runnable{
                public void run(){
                        while(true){
                                try{
                                        Thread.sleep(1000);
                                }catch(Exception ex){
                                        ex.printStackTrace();
                                }
                                CometEngine engine =CometContext.getInstance().getEngine();
                                engine.sendToAll(CHANNEL,Runtime.getRuntime().freeMemory()/1024);
                        }
                }
        }

        public void contextDestroyed(ServletContextEvent arg0){

        }
 }

 
배치 하 다.
web.xml
 
<listener>
                <description>Comet4J    </description>
                <listener-class>org.comet4j.core.CometAppListener</listener-class>
        </listener>
        <servlet>
                <description>Comet  [  :org.comet4j.core.CometServlet]</description>
                <display-name>CometServlet</display-name>
                <servlet-name>CometServlet</servlet-name>
                <servlet-class>org.comet4j.core.CometServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>CometServlet</servlet-name>
                <url-pattern>/conn</url-pattern>
        </servlet-mapping>

<listener>
  <description>HelloWorld</description>
  <listener-class>org.comet4j.demo.helloworld.HelloWorld</listener-class>
 </listener>

 
 
 
 
 

좋은 웹페이지 즐겨찾기