第一步:
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 提供以下协议服务: 1. **join** - 开始会话 2. **leave** - 结束会话 3. **subscribe** - 订阅主题 4. **unsubscribe** - 取消...
Pushlet_Chat是一种实时通信技术,常用于构建即时消息系统(IM),尤其在B/S架构中广泛应用。它基于HTTP长连接,通过服务器向客户端推送数据,实现了低延迟、高效能的信息传输。在这个项目中,我们看到的是一个针对...
这个"pushlet定时向页面发送消息demo"是一个实例,展示了如何使用Pushlet库来实现定时向用户页面发送更新信息。 首先,理解Pushlet的基本工作原理。Pushlet采用了一个叫做Comet的技术,Comet是长连接的一种实现方式...
在"pushlet定时向前台推送消息"的场景中,Pushlet被用来创建一个能够定时发送消息到前端的应用。这个应用可能包含以下几个关键组成部分: 1. **服务器端组件**:Pushlet服务器端通常会有一个或多个服务,它们负责...
通过上述知识点的学习和实践,你可以掌握如何使用Pushlet实现高效的点对点消息传递,这对于开发实时协作工具、在线游戏、聊天应用或者任何需要实时数据更新的系统都非常有用。在提供的"mypushlet"文件中,可能包含了...
Pushlet Client则运行在用户的浏览器或应用程序中,用于建立与服务器的持久连接,并接收来自服务器的消息。 首先,要理解Pushlet的工作原理。当客户端(例如,一个Web浏览器)与Pushlet Server建立连接后,服务器会...
Pushlet库的核心功能是实现实时的服务器向客户端推送数据,而无需客户端频繁发起请求,这大大提高了网络应用的效率和用户体验。以下是对Pushlet配置应用的详细解释: 1. **引入Pushlet.jar**:首先,你需要在你的...
- **API 推送**:通过编程方式调用 Pushlet 提供的 API,主动向特定客户端或所有客户端发送消息。这种方式更加灵活,可以根据业务需求随时触发推送。 2. **准备工作**: - **JSP 页面设置**:在 JSP 页面中添加 `...
Tomcat的webapps目录是放置Web应用的默认位置,将本实例的压缩包解压后,直接将整个项目文件夹放入webapps下,例如命名为`pushlet_example`。 **项目结构** 解压后的项目包含以下主要文件和目录: 1. **index.jsp*...
为了更好地实践PushLet,可以下载提供的源码包(PushLet_A),导入MyEclipse环境中进行编译和运行。通过调试和修改代码,可以进一步熟悉PushLet的工作流程,也可以根据项目需求对其进行定制。 总的来说,PushLet是...
Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 Ext.showonLine='showonLine'; // 好友列表显示区 Ext.jsq='jsq'; // 好友列表计数器 ...
在sessionid采用userid后,服务端可以根据用户的标识来区分不同的连接,当有新消息或者特定信息需要发送给特定用户时,可以通过这个标识找到对应的连接,从而实现个性化推送。 标签"pushlet MI 消息发送"表明...
在实际应用中,Pushlet技术可以用于实时股票更新、聊天室、在线游戏、协作工具等多种场景。开发者可以通过解压提供的pushlet-2.0.3压缩包,获取源代码、文档和示例,以便更好地理解和集成Pushlet到自己的项目中。 ...
在Web应用中,Pushlet服务通常用于实现数据的即时更新,比如股票报价、聊天室消息、在线游戏状态更新等场景,极大地提高了用户体验。 Pushlet的核心概念是“订阅/发布”模型,即Subscriber(订阅者)和Publisher...
由服务端推送消息至客户端(或指定id的客户端),代码中没有用官网的jar文件,而是用的源码,做了一定的修改,实现了每个客户端都可以自定义id,然后服务端可以向指定id客户端推送消息。 不多说了,先部署启动工程 ...
Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 Ext.showonLine='showonLine'; // 好友列表显示区 Ext.jsq='jsq'; // 好友列表计数器 ...
6. **pushlet_文档.doc**:这可能是一个详细的Pushlet使用手册或开发指南,包含了Pushlet的安装、配置、API使用等方面的指导。 7. **pushlet_test**:这个文件可能是Pushlet的测试脚本或者测试案例,用于验证...
总的来说,Pushlet提供了一种简单的方式来实现在Web应用中从后台向前端推送消息,这对于实时聊天、股票更新、在线游戏等场景非常有用。通过理解Pushlet的工作原理和实践操作,开发者可以有效地提升Web应用的交互体验...