30秒破解所有密码(非常适合我们)
2009-03-25 21:16
309 查看
Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。有关comet4j更多的信息在此不再详细展开,需要了解的请访问地址 http://code.google.com/p/comet4j/。
在项目中使用comet4j需要引入2个文件,comet4j.js、comet4j-tomcat6.jar。下面是一个示例,希望对需要的人有所帮助。不足之处还请大神谅解。
view:hello.jsp
service code:NewMsgCollector.java
web.xml
在项目中使用comet4j需要引入2个文件,comet4j.js、comet4j-tomcat6.jar。下面是一个示例,希望对需要的人有所帮助。不足之处还请大神谅解。
view:hello.jsp
<%@ 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=UTF-8"> <title>comet</title> <script type="text/javascript" src="/comet4j_demo/js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="/comet4j_demo/js/comet4j.js"></script> <script type="text/javascript"> $(function(){ JS.Engine.on('hello', function(text){ $("#targetDiv").append("<span id='msgSpan' style='color:red'>" + text + "</span>"); }); <% String userId = request.getParameter("userId"); session.setAttribute("currentUserId", userId); %> JS.Engine.start('conn'); }); $(document).ready(function(){ $("#targetDiv").bind("click", function(){ //有新消息 if ($(this).find("span").length > 0) { $("div > span").remove(); } }); }); </script> </head> <body> <table border="1" width:600px> <tr> <td>hello comet</td> <td><div id="targetDiv" style="width:300px"></div></td> </tr> </table> </body> </html>
service code:NewMsgCollector.java
public class NewMsgCollector extends ConnectListener implements ServletContextListener { private static final String CHANNEL = "hello"; @Override public void contextInitialized(ServletContextEvent contextEvent) { //注册应用的channel CometContext context = CometContext.getInstance(); context.registChannel(CHANNEL); //添加监听器 CometEngine engine = CometContext.getInstance().getEngine(); engine.addConnectListener(this); } @Override public void contextDestroyed(ServletContextEvent contextEvent) {} @Override 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() { @Override public void run() { CometEngine engine = CometContext.getInstance().getEngine(); //推送到所有客户端 //engine.sendToAll("hello", connId + " - you have " + ((int)(Math.random() * 9) + 1) + " new message <br />"); 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 <br />"); } } }; 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; } }
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>NewMsgCollector</description> <listener-class>NewMsgCollector</listener-class> </listener>
相关文章推荐
- 30秒破解所有密码
- 30秒破解所有密码
- 非常激动,轻松破解QQ密码!
- 10进制转62进制,实现穷举指定位数的所有密码组合(暴力破解)
- 破解Access(*.mdb)目前所有版本的密码
- 一个可能破解所有公钥密码的方法
- [C#] 10进制转62进制,实现穷举指定位数的所有密码组合(暴力破解)
- 破解电脑密码的所有妙方,请收藏保存
- 招教你破解所有电脑开机密码
- 破解Access(*.mdb)目前所有版本的密码
- 破解Access(*.mdb)目前所有版本的密码
- 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询。这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧!
- 30妙破解所有密码
- 破解md5加密扫描程序(适合扫描弱密码)[
- XDOJ-1006-亮亮破解密码(数列中所有区间位操作值之和)
- 破解md5加密扫描程序(适合扫描弱密码)[
- 中国电信某接口可破解某省所有用户服务密码姓名信息并可通过服务密码免费兑换礼品变现
- 密码发生器 在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或
- 电脑所有密码破解总结
- 密码发生器(在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了)