`
jingliankui123
  • 浏览: 106126 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

jquery-Bayeux数据推送

 
阅读更多

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

<title>Insert title here</title>

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.js"></script>

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.json-2.2.js"></script>

<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.cometd.js"></script>

</head>

<body>

<input type="button" value="hehe" onclick="test()" />

</body>

<script type="text/javascript">

 

$(function(){

$.comet.init("${pageContext.request.contextPath}/cometd/cometd");  

$.comet.subscribe("/test/task", callback);

});

 

function callback(msg){

alert("eheh进来了");

if(msg&&msg.data&& msg.data.test){

alert(msg.data.test);

}

}

 

function test(){

alert(new Date().getTime());

$.ajax({

url:"${pageContext.request.contextPath}/CometServlet?time"+new Date().getTime()

});

}

</script>

</html>

 

 

$.comet.init("${pageContext.request.contextPath}/cometd/cometd");  //初始化

$.comet.subscribe("/test/task", callback);//订阅名为"/test/task"的主题

这个/test/task与java代码中的

public class DataPushUtil {
        
    public static void publish(HttpServletRequest request,String channelName,String context){
    	if(null!=request){
    		Bayeux b = (Bayeux)(request.getSession().getServletContext().getAttribute(Bayeux.DOJOX_COMETD_BAYEUX));
    		Channel c = b.getChannel(channelName, false);  
    		if(null!=c){
    			Map<String, Object> message = new HashMap<String, Object>();  
    			message.put("test", "jsp: hello world");  
    			c.publish(b.newClient("server_user", null), message, "new server message");  
    		}
    	}
    }
    
    
    public static void publishTask(HttpServletRequest request,String context){
    	if(null!=request){
    		Bayeux b = (Bayeux)(request.getSession().getServletContext().getAttribute(Bayeux.DOJOX_COMETD_BAYEUX)); 
    		Channel c = b.getChannel("/test/task", false);  
    		if(null!=c){
    			Map<String, Object> message = new HashMap<String, Object>();  
    			message.put("test", context);  
    			c.publish(b.newClient("server_user", null), message, "new server message");  
    		}
    	}
    }
    
}

 

Channel c = b.getChannel("/test/task", false);  
当后台调用publishTask方法时,就会调用页面的callback方法

 

分享到:
评论

相关推荐

    cometd-archetype-spring-dojo-jetty7-2.8.0-RC1.zip

    CometD是一个开源的WebSocket和AJAX双向通信框架,它实现了Bayeux协议,允许服务器主动向客户端推送数据,实现低延迟的实时通信。Spring框架则为这个项目提供了强大的依赖注入和面向切面编程能力,使得服务端组件的...

    cometd-jquery的jar

    CometD是一个基于Bayeux协议的开源 comet(也称为长轮询)框架,它提供了一个高效的、可扩展的、跨平台的实时通信解决方案。在Web开发中,实时通信是实现如聊天、股票更新、协作编辑等应用的关键技术。CometD支持...

    cometd-3.0.0.beta2-distribution.tar.gz

    它提供了服务器推送技术,使得服务器可以主动向客户端发送数据,而不仅仅是响应客户端的请求。CometD的核心理念是通过长连接来实现双向通信,极大地提高了Web应用的交互性和实时性。 在"cometd-3.0.0.beta2-...

    cometd 框架实现的几个小程序

    用户发送的消息可以通过CometD服务直接推送到其他在线用户,无需客户端不断地轮询服务器获取新消息。这大大提高了用户体验,降低了服务器负载。 2. **注册功能**:注册通常涉及用户身份验证和授权。在CometD中,...

Global site tag (gtag.js) - Google Analytics