java推送Comet_使用Comet4j实现消息推送

public class NewMsgCollector extends ConnectListener implements ServletContextListener {

private static final String CHANNEL = "hello";

public void contextInitialized(ServletContextEvent contextEvent) {

//注册应用的channel

CometContext context = CometContext.getInstance();

context.registChannel(CHANNEL);

//添加监听器

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

engine.addConnectListener(this);

}

public void contextDestroyed(ServletContextEvent contextEvent) {}

public boolean handleEvent(ConnectEvent connEvent) {

final CometConnection conn = connEvent.getConn();

//建立连接和用户的关系

doCache(conn);

final String connId = conn.getId();

/*模拟业务逻辑*/

Timer timer = new Timer(true);

TimerTask task = new TimerTask() {

public void run() {

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

//推送到所有客户端

//engine.sendToAll("hello", connId + " - you have " + ((int)(Math.random() * 9) + 1) + " new message 
");

if (CacheManager.getContent(connId).isExpired()) {

doCache(conn);

}

if (simulateService(String.valueOf(CacheManager.getContent(connId).getValue()))) {

//推送到指定的客户端

engine.sendTo(CHANNEL, engine.getConnection(connId), CacheManager.getContent(connId).getValue()

+ " - you have " + ((int) (Math.random() * 9) + 1) + " new message 
");

}

}

};

timer.schedule(task, 10000, (1000 * 5));

return true;

}

private void doCache(final CometConnection conn) {

Object userId = conn.getRequest().getSession().getAttribute("currentUserId");

if (userId != null) {

CacheManager.putContent(conn.getId(), String.valueOf(userId), CacheConstant.EXPIRE_AFTER_ONE_HOUR);

}

}

/**

* 模拟业务

* 返回true,false

* true即表示需要推送消息,false即不需要推送

*/

private boolean simulateService(String id) {

int flag = (int) Math.round(Math.random());

if (flag == 0) {

System.out.println(id + " - no messge...");

return false;

}

System.out.println(id + " - messge is coming...");

return true;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java飞行记录器是什么_运行java飞行记录器JFR(java flight recorder)

JFR上面讲到的工具都是作为快速的查看诊断工具的。如果要深入分析问题,可以选择使用内置的Java飞行记录器:Java Mission Control。转储JFR需要三步:1. 创建一个包含了你自己配置的JFR模板文件。运行jmc, 然后Window->Flight Recording Template Manag…

java申请安卓权限_java4android (包和访问权限)

什么是Java当中的软件包?为什么要使用软件包?如何给一个类打包?//将类放置到一个包中,需要使用package“包名”//打包 编译的方法 javac -d . Test.java//出现错误:编码GBK的不可映射字符 javac -encoding UTF-8 -d . …

java圆形泳池问题_Java实现 LeetCode 778 水位上升的泳池中游泳(二分+DFS)

778. 水位上升的泳池中游泳在一个 N x N 的坐标方格 grid 中,每一个方格的值 grid[i][j] 表示在位置 (i,j) 的平台高度。现在开始下雨了。当时间为 t 时,此时雨水导致水池中任意位置的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台&#xff0c…

python可以构建sem模型_python-分组的熊猫DataFrames:如何将scipy.stats.sem应用于它们?...

我知道我可以通过执行以下操作来应用numpy方法:dataList是DataFrames的列表(相同的列/行).testDF (concat(dataList, axis1, keysrange(len(dataList))).swaplevel(0, 1, axis1).sortlevel(axis1).groupby(level0, axis1))testDF.aggregate(numpy.mean)testDF.aggr…

java类中获取全局变量_java 通过反射获取类的全局变量、方法、构造方法

package com.str;public class ZiFuChuan {public static String ss "全局变量!!!!!!";String s2 null;public int aa 1 ;int aa2;double dou 1.1;Double d new Double(1.1);public static void main(String[] args) {}public ZiFuChuan(){}public ZiFuChuan(St…

java phantomjs 截图_phantomjs 截图

phantomjs 截图,多个setTimeout是为了让页面尽量加载完整/**截图test.js**/var page require(webpage).create();page.viewportSize { width: 1024, height: 600 };page.open(http://www.2345.com/, function(status) {var bb page.evaluate(function(){// window…

JAVA如何隐藏异常堆栈_java – 如何在控制台上停止打印异常堆栈跟踪?

这是我做的这样的战争作为工作。添加一个过滤器并劫持所有的请求和响应。检查异常并检查类型。/*** Hijacks all the http request and response here.* Catch the SocketException and do not print* If other exceptions print to console* date : 9-18-2013** author Suresh…

阿里最新php面试题及答案,面经网-阿里php面试题(四)

阿里php面试题(四)1.表单中 get与post提交方法的区别?答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息.2.session与cookie的区别?答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_…

php 条形码生成器,PHP条形码图像生成器

这是一个用于生成barocdes的简单PHP脚本://For displaying barcodes//Arguments are:// code Number you want outputted as a barcode//You can use this script in two ways:// From a webpage/PHP script // Directly in your web browser http://www.example.co…

php怎么把日期加时间,将小时分钟添加到日期时间 - php

任何人都可以帮助我解决长时间困扰的问题,我正在尝试添加时间,例如格式为h:ia的小时和分钟,格式为01:00(一个小时),00:30(30分钟), 02:00(两个小时)等。在php中。因为我有几个小时,例如(00:30,01:00,01:30,…

php keep user login,php5.4安装dedecms登录后台空白解决办法(session_register函数已废弃)...

本地安装dedecms5.7登录后台空白,找了原因,原来是session_register函数已经被php5.4废弃的原因。-------------------------------------------------------------解决方法:找开include/userlogin.class.php文件,查找以下内容&…

java欧冠抽签,欧冠抽签吐槽:最大的“礼包”被C罗拿走!梅西出局概率超50%?...

欧冠16强抽签揭晓,结果:多特VS巴黎,皇马VS曼城,亚特兰大VS瓦伦西亚,马竞VS利物浦,切尔西VS拜仁,里昂VS尤文图斯,热刺VS莱比锡,那不勒斯VS巴萨。怎么评价这样的抽签呢&…

java ajax报错500,(Struts2+JSON+Ajax) XMLHttpRequest ==500如何解决

(Struts2JSONAjax) XMLHttpRequest 500怎么解决?本帖最后由 zjlisok 于 2013-01-29 02:00:05 编辑XMLHttpRequest.status500奇怪了,搞了半天还没有解决。朋友们请帮我一把,谢谢!废话不说,先上代码JS代码:va…

PHP的rm指令,git rm 命令

git rm 命令git rm 命令用于删除文件。如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。git rm 删除文件有以下几种形式:1、将文件从暂存区和工作区中删除:git rm 以下实例从暂存区…

jAvA中deprecate,在Java中使用Deprecated方法或类是错误的吗?

1.在Java中使用Deprecated方法或类是错误的吗?从已弃用的定义 :注释Deprecated的程序元素是程序员不鼓励使用的程序元素,通常是因为它是危险的,或者是因为存在更好的select。该方法被保存在API中,用于在未指定的时间段…

java运算符试题,编程语⾔⾯试题之新版javase基础语法篇之运算符

简介:⾯试中 短路运算符 和 位运算考点:计算机基础运算知识难度【** *】你知道 运算符 &和&&、|和||的区别吗?& 按位与操作只有对应的两个⼆进制数为1时,结果位才为11&1 11&0 00&1 00&0 0| 按…

matlab 流固耦合,详讲流固耦合

引言近来,航空航天工业在世界上发展迅速,而作为“飞机心脏”的航空发动机是限制其发展的主要因素。目前,航空发动机日益向高负荷、高效率和高可靠性的趋势发展,高负荷导致的高逆压力梯度容易引起流动分离,同时随着科技…

php加大session,PHP :: Bug #63251 :: yaf session功能增强

[2012-10-10 06:34 UTC] vipcenter at vip dot qq dot comDescription:------------一:建议增加:设置和获取session_id的方法!如:Session::getInstance()->id(qtvv60cui9c22qlk2fqr0na1d1);如果不传参则返回当前使用的session_id二&#x…

php提示是否运行,php运行错误提示

第一种方法在php.ini文件里改变display_errors和error_reporting的值,没有的直接加上。; 第一处修改; display_errors Offdisplay_errors On; 第二处修改; error_reporting E_ALL & ~E_DEPRECATED & ~E_STRICTerror_reporting E_ALL | E_STRICTdisplay_…

php stream encoding,PHP之mb_check_encoding使用方法分享

本文主要和大家分享mb_check_encoding使用方法,希望能帮助到大家。mb_check_encoding(PHP 4 > 4.4.3, PHP 5 > 5.1.3, PHP 7)mb_check_encoding — Check if the string is valid for the specified encodingmb_check_encoding — 检查字符串在指定的编码里是…