第一步:
1.新建立web项目,将pushlet目录webapps\pushlet\WEB-INF\classes中的pushlet.properties和sources.properties文件拷贝到src目录下
2.将pushlet目录src中的包拷贝到src目录下
3.上一步添加完后,会出现错误,将log4j的包拷贝到项目的lib目录中就可以了
4.上述步骤完成后,项目的结构如下图所示:
第二步:
1.修改web.xml文件,添加如下代码:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>pushlet_userId</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>pushlet</servlet-name> <servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>pushlet</servlet-name> <url-pattern>/pushlet.srv</url-pattern> </servlet-mapping> </web-app>
2.修改ajax-pushlet-client.js文件,在最开始的位置添加 userId:''属性 , _doRequest函数中的var url = PL.pushletURL + '?p_event=' + anEvent;语句,在后面添加如下代码片段:
if (anEvent == 'join' || anEvent == 'join-listen') { url = url + '&userId=' + PL.userId; }
3.修改index.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>Insert title here</title> <script type="text/javascript" src="ajax-pushlet-client.js"></script> <script type="text/javascript"> PL.userId = 'twoseven'; PL.joinListen('hwpushlet'); function onData(event) { document.getElementById("number").innerHTML += event.get("number"); } </script> </head> <body> <div id="number"></div> </body> </html>
4.修改pushlet源代码,找到nl.justobjects.pushlet.core.SessionManager类,修改代码为如下结构:
/** * Create new Session (but add later). */ public Session createSession(Event anEvent) throws PushletException { // Trivial //return Session.create(createSessionId()); return Session.create(anEvent.getField("userId", "vistor")); }
5.添加Pushlet推送类,代码如下:
package com; import java.util.Random; import javax.servlet.http.HttpServlet; import nl.justobjects.pushlet.core.Event; import nl.justobjects.pushlet.core.EventPullSource; import nl.justobjects.pushlet.core.Session; import nl.justobjects.pushlet.core.SessionManager; public class PushletServ extends HttpServlet { private static final long serialVersionUID = 1L; static public class HwPushlet extends EventPullSource { @Override protected long getSleepTime() { return 5000; } @Override protected Event pullEvent() { Event event = Event.createDataEvent("hwpushlet"); Session[] sessions = SessionManager.getInstance().getSessions(); if (sessions.length > 0) { StringBuilder str = new StringBuilder(""); for (int i = 0; i < sessions.length; i++) { if (!sessions[i].getId().equals("twoseven")) continue; if (!str.toString().equals("")) str.append(","); str.append("'" + sessions[i].getId() + "'"); } if (!str.toString().equals("")) { event.setField("number", ""+(new Random().nextInt(10)));//只向userId为twoseven的用户发送信息 } } return event; } } }
6.修改sources.properties文件为下图所示:
# Define Pull Sources here. These classes must be derived from # nl.justobjects.pushlet.core.EventPullSource # Inner classes are separated with a $ sign from the outer class. source1=com.PushletServ$HwPushlet
7.启动服务器,在浏览器中输入地址,可以看到如下图所示的结果,第一个红线为服务器返回的结果(动态更新),第二个红线是浏览器的请求:
参考资料:
1.Pushlets官网:http://www.pushlets.com/
2.长连接_百度百科:http://baike.baidu.com/view/2831907.htm
3.利用Ajax实现长连接(模拟推送) (1) - liuhh - 博客园:http://www.cnblogs.com/liuhh/archive/2011/05/12/2044230.html
4.使用 Java 实现 Comet 风格的 Web 应用:http://www.ibm.com/developerworks/cn/web/wa-cometjava/
5.Comet:基于 HTTP 长连接的“服务器推”技术:http://www.ibm.com/developerworks/cn/web/wa-lo-comet/index.html
6.浅析Comet技术在Java Web实时系统开发中的应用:http://syue.com/Paper/Computer/App/245823.html
7.Pushlet 推送数据库消息到前台指定用户:http://blog.csdn.net/dataminer_2007/article/details/7653283
相关推荐
NULL 博文链接:https://nowwondering.iteye.com/blog/1605158
pushlet_2.0.3_源码分析_服务器端__ java 服务器推技术简单实现!
基于pushlet_chat技术的群聊实现 解决了中文乱码问题,支持中文用户名和中文内容的小例子,压缩文档里除测试工程外,还包括部署步骤和处理中文乱码的文档说明!
这是自己用过的pushlet定时向页面发送消息的一个demo
pushlet定时向前台推送消息,可以直接运行
Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 Ext.showonLine='showonLine'; // 好友列表显示区 Ext.jsq='jsq'; // 好友列表计数器 ...
由服务端推送消息至客户端(或指定id的客户端),代码中没有用官网的jar文件,而是用的源码,做了一定的修改,实现了每个客户端都可以自定义id,然后服务端可以向指定id客户端推送消息。 不多说了,先部署启动工程 ...
pushlet配置应用实例,看了之后就能简单应用pushlet实时推送数据
Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 Ext.showonLine='showonLine'; // 好友列表显示区 Ext.jsq='jsq'; // 好友列表计数器 ...
找了好久资料,没有找到实例,自己参考网上写的实例,可用。
pushlet开发与应用
容易上手的简单pushlet例子,供大家学习,代码不错,值得下载。
服务器推 pushlet 服务器推 pushlet 服务器推 pushlet 服务器推 pushlet
Pushlet后台往jsp前台推送消息实例(工程打包,能够运行)
个人制作整理的pushlet白皮书中文参考文档。 目录: 1.介绍(Introduction) 3 2.动机(Motivation) 4 3.通知解决(Notification Solutions) 5 3.1轮询(Polling) 6 3.2服务器端回调(Server-side callbacks) 6 3.3 ...
demo中有定时推送获取和按需求推送获取的方式,改写了一部分原始pushlet的js
pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书pushlet白皮书
pushlet系统消息推送demo,pushlet消息推送示例
server端向浏览器client发送通知这种通讯模式在J2EE应用中很常见,通常使 Pushlet服务器端Java类UML图 Pushlet服务器端Java类UML图 用采用RMI、CORBA或者自定义TCP/IP信息的applet来实现。这些技术往往由于复杂而...