Comet4j
6365 단어 Comet
아래 사이트 주 소 는 다운로드 할 수 있 습 니 다:
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>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
How to implement COMET with PHPWe need: * A PHP script that will handle the persistent http request (backend.php) * A HTML file tha...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.