comet4j笔记

1. 资源

comet4j-tomcat7.jar
comet4j.js

2. 资源添加

普通项目直接加入jar包至lib,addtobuildpath即可
maven项目,需先将jar包加入至本地仓库,然后在pom.xml中引入

js直接引入页面

maven手动安装jar包至本地仓库

mvn install:install-file -Dfile=jar包的位置 -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=jar


<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>3.1.0.RELEASE</version>
</dependency>

对应该配置项的命令即为:

mvn install:install-file -Dfile=D:\mvn\spring-context-support-3.1.0.RELEASE.jar -DgroupId=org.springframework -DartifactId=spring-context-support -Dversion=3.1.0.RELEASE -Dpackaging=jar


Maven 手动添加 JAR 包到本地仓库

3. 配置

3.1 web.xml

<!-- comet4j -->
<listener>
    <listener-class>org.comet4j.core.CometAppListener</listener-class>
</listener>
<listener>
    <description>comet</description>
    <listener-class>com.xxx.xxx.listener.Comet4jListener(自己添加的类)</listener-class>
</listener>
<servlet>
    <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> 

3.2 监听类(web.xml中配置的Listener)

容器启动时注册Channel
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.comet4j.core.CometContext;
import com.wttech.szyy.utils.StringUtil;

public class Comet4jListener implements ServletContextListener{
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        //CometContext : Comet4J上下文,负责初始化配置、引擎对象、连接器对象、消息缓存等。
        CometContext cc = CometContext.getInstance();
        //注册频道
        cc.registChannel("频道号");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }
}

3.3 页面配置

引入comet4j.js
// 建立连接,conn 即web.xml中 CometServlet的<url-pattern>
JS.Engine.start('conn');

JS.Engine.on({
    start : function(cId, channelList, engine){
        console.log('连接已建立,连接ID为:' + cId);
    },
    stop : function(cause, cId, url, engine){
        console.log('连接已断开,连接ID为:' + cId + ',断开原因:' + cause + ',断开的连接地址:'+ url);
    },
    "listener中注册的频道号" : function(msg) {
        alert("推送消息:" + msg);
    }
}); 

3.4 消息推送

CometEngine engine = CometContext.getInstance().getEngine();

方式一:engine.sendToAll("频道号", "数据");
发送给所有连接到该频道的用户(群发)

方式二:engine.sendTo("频道号", engine.getConnection("页面连接成功后的cId"), "数据");
发送给某一个用户(定点发送)

4.集成到业务系统进行推送的想法

![流程图](https://img-blog.csdn.net/20170824165743099?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3poZTE5OTE5MTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值