Comet与SpringMVC的集成-java后端消息推送

使用Comet为了实现java后台给前台页面推送消息通知

准备

web项目中引入comet4j.js文件和comet4j-tomcat7.jar包

web.xml

修改web.xml,添加以下comet配置


        org.comet4j.core.CometAppListener
    
    
        HelloWorld
        com.aerors.listener.TestComet
    
    
        CometServlet
        CometServlet
        org.comet4j.core.CometServlet
    
    
        CometServlet
        /conn
    

com.aerors.listener.TestComet改为实际java类位置

com.aerors.listener.TestComet

package com.aerors.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.comet4j.core.CometContext;
import org.comet4j.core.CometEngine;
 
public class TestComet implements ServletContextListener {

    private static final String CHANNEL = "test";
    private static int number1 = 0 ;

    public void contextInitialized(ServletContextEvent arg0) {
        CometContext cc = CometContext.getInstance();
        cc.registChannel(CHANNEL);// 注册应用的channel

        Thread helloAppModule = new Thread(new HelloAppModule(),
                "Sender App Module");
        // 是否启动
        helloAppModule.setDaemon(true);
        // 启动线程
        helloAppModule.start();
    }

    class HelloAppModule implements Runnable {
        public void run() {
            while (true) {
                try {
                    // 睡眠时间
                    Thread.sleep(2000);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                CometEngine engine = CometContext.getInstance().getEngine();
                // 获取消息内容
                long l = getFreeMemory();
                // 开始发送         
                engine.sendToAll(CHANNEL, number1++);
            }
        }
    }
}

前台页面JSP页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

  
  
  
  
Comet4J Hello World 
 

  
  
  
    ... 

两种方式加载都可以

注意:前台为动态JSP页面,不能是静态html页面

image.png

可以看出请求一直保持,页面上数字也一直在刷新


你可能感兴趣的:(Comet与SpringMVC的集成-java后端消息推送)