`
yjdingkai
  • 浏览: 18671 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Pushlet实现后台信息推送(一)

阅读更多

Pushlet是使用较多的后台向前台推送信息的工具。前台订阅某个感兴趣的事件joinListen,触发后台的Pushlet的servlet,为该请求会话建立session,默认这个sessionID是随机的java.rmi.server.UID(后面会介绍pushlet二次开发,改掉这个UID,以便可以自由控制向某一个特点前台推送信息)。之后前台会向后台发送refresh请求,后台返回给前台下一次发送refresh的时间间隔,如此循环,以便维持session会话,宏观上就实现了前后台之间的长连接。

这里首先列出最简单的后台利用PullSource周期性地向订阅了某事件的所有网页客户端推送信息。

下载最新版本的Pushlet。MyEclipse下建立一个web工程,我这里叫PushletTest,将pushlet.jar加入引用路径,pushlet.properties和sources.properties放入WebRoot/WEB-INF下,工程结构如下图:

 

在web.xml中添加pushlet的servlet的声明,让这个servlet在服务器启动时就启动(load-on-startup为正数),web.xml代码如下:

   

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<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>	
	
	<welcome-file-list>
	   <welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 注意触发pushlet这个servlet的条件是请求pushlet.srv。

接下来就是自定义推送源,MyPushSource.java代码如下: 

package com.mysrc;

import java.io.Serializable;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;

public class MyPushSource implements Serializable {
	 public static class MySource1 extends EventPullSource { 
        @Override 
        protected long getSleepTime() { 
            return 1000;   
	    } 
        @Override 
        protected Event pullEvent() { 
            Event event =Event.createDataEvent("myevent1"); 
            event.setField("key1","my_value1"); 
            return event;  
        } 
	 } 
}

 每隔一秒钟就向订阅了myevent1的所有前端页面推送信息,这里是一个键值对。

然后需要在sources.properties声明该源(该文件现在只有这一行内容):

source1=com.mysrc.MyPushSource$MySource1

 

前台页面test.html代码如下: 

<html>
  <head>
  <script type="text/javascript" src="ajax-pushlet-client.js"></script> 
  <script type="text/javascript">  
         PL._init();  
         PL.joinListen('myevent1'); 
         function onData(event) { 
            alert(event.get("key1"));  
         }
  </script> 
  </head>
  <body>
    This is pushlet test page....<br>
  </body>
</html>

 PL是在ajax-pushlet-client.js中定义的。好了,将工程部署到Tomcat,启动,请求test.hmtl,就能看到my_value1的alert的显示了。

需要说明的是,也可以将test.html和ajax-pushlet-client.js放在本地,不用请求服务器上的,因为这儿的关键是触发服务器上的pushlet那个servlet,之后能进行心跳同步。打开ajax-pushlet-client.js,找到PL.pushletURL = PL._getWebRoot() + 'pushlet.srv';这一行,这儿PL._getWebRoot() 是通过ajax-pushlet-client.js在服务器上的路径得到url的。这儿咋们自己换成服务器的地址就可以了。我的为:PL.pushletURL = "http://192.168.1.154:7087/PushletTest/" + 'pushlet.srv';

OK,然后用浏览器打开这个本地的test.html页面就可以了。

分享到:
评论
4 楼 leixm 2012-11-22  
Reset 写道
还是websocket吧

人家客户还是用的IE6,
3 楼 Reset 2012-10-29  
还是websocket吧
2 楼 leixm 2012-09-21  
Reset 写道
ajax-pushlet-client.js是轮询的 只有js-pushlet-client.js才是长连接的 坑爹了。。。



是,用js-pushlet-client.js有个问题就是页面会有刷新的状态,这个看起很不爽啊
1 楼 Reset 2012-08-24  
ajax-pushlet-client.js是轮询的 只有js-pushlet-client.js才是长连接的 坑爹了。。。

相关推荐

    使用Pushlet来实现服务器端向客户端推送信息

    使用Pushlet来实现服务器端向客户端推送信息

    pushlet定时向前台推送消息

    Pushlet是一种基于Java的技术,用于实现服务器向客户端的实时数据推送。这种技术的核心思想是打破传统的HTTP请求-响应模式,让服务器能够在数据更新时主动将信息推送给客户端,而不是等待客户端发起新的请求来获取...

    pushlet java 消息实时推送

    Pushlet Java 消息实时推送是一个典型的技术实现,它允许服务端主动向客户端发送数据,无需客户端持续轮询,极大地提高了效率和用户体验。在这个简单的消息推送实例中,特别强调了解决中文错误问题,这意味着它已经...

    Pushlet后台往jsp前台推送消息实例

    总的来说,Pushlet提供了一种简单的方式来实现在Web应用中从后台向前端推送消息,这对于实时聊天、股票更新、在线游戏等场景非常有用。通过理解Pushlet的工作原理和实践操作,开发者可以有效地提升Web应用的交互体验...

    服务器推送pushlet讲解

    Pushlet是基于Comet技术的一种实现,它为Java开发者提供了一种高效的服务器推送解决方案。 一、Comet技术 Comet是一种允许服务器长时间保持HTTP连接的技术,它打破了传统的Web应用模型,即客户端发起请求,服务器...

    基于pushlet实现的jsp网站消息推送

    Pushlet是基于Servlet和JSP技术的,它实现了服务器端向客户端主动推送数据的功能,无需客户端不断轮询服务器来获取新信息。Pushlet的核心概念是“连接会话”,通过保持一个持久的HTTP连接,服务器可以在有新数据时...

    pushlet实现服务器端向客户端推送消息总结

    Pushlet 是一种基于 Java 的实时通信框架,用于实现在服务器端向客户端主动推送消息的功能,而无需客户端不断轮询。这种技术在构建实时应用程序,如聊天室、实时股票更新或在线游戏等场景中非常有用。以下是关于 ...

    一个基于pushlet推送的小例子

    总结来说,"一个基于pushlet推送的小例子"是一个展示如何在Tomcat服务器上利用Pushlet框架实现Comet技术的实例。通过这个例子,开发者可以学习到如何构建和部署一个能够进行服务器端数据推送的Web应用,这对于需要...

    pushlet实例(java服务端推送消息)

    实现多个客户端连接到web服务器,由服务端推送消息至客户端(或指定id的客户端),代码中没有用官网的jar文件,而是用的源码,做了一定的修改,实现了每个客户端都可以自定义id,然后服务端可以向指定id客户端推送消息...

    pushlet消息推送

    Pushlet是一种基于HTTP长连接的消息推送技术,最初由Jakarta项目开发,主要用于实现实时的、双向的Web通信。在传统的HTTP请求-响应模型中,客户端必须主动发起请求才能获取服务器端的数据,而Pushlet则打破了这种...

    Pushlet消息推送

    **Pushlet消息推送** Pushlet是一种基于HTTP长连接的消息推送技术,它允许服务器主动将数据推送到...对于想要学习Pushlet消息推送的人来说,这是一个宝贵的资源,可以帮助理解Pushlet的工作原理并实现在自己的项目中。

    http长连接(服务器推)使用pushlet教程示例以及jar包源码

    "使用Pushlet实现点对点发送.docx"和"使用Pushlet实现一对多的信息推送.docx"则分别介绍了这两种推送模式的实现方法。 通过深入研究这些文档和源码,你可以了解到Pushlet是如何在底层利用HTTP长连接来实现实时通信...

    使用Ext Pushlet 实现的点对点聊天功能

    前台使用Ext ,后台使用pushlet /pushlet/WebRoot/index.jsp 页面主要包含几个部分。 Ext.PUSHLET_URL='piccUtil'; // 发送消息的地址 Ext.fcontent='fcontent'; // 显示窗口或有新消息时, 显示好友ID的区域 ...

    通过推送机制(Tomcat comet,pushlet)实现进度条

    标题中的“通过推送机制(Tomcat comet,pushlet)实现进度条”涉及到的是Web应用中的一种实时通信技术,主要用于提供动态更新和用户交互。这里主要介绍Tomcat的Comet和Pushlet技术,以及如何利用它们来创建一个...

    服务器推送 pushlet

    Pushlet是一个服务器推送框架的实例,它提供了一种实现服务器到客户端数据推送的方法。 Pushlet的核心概念是基于HTTP长连接的 Comet 模式。Comet模式通过长时间保持一个HTTP连接开放,使得服务器可以在适当的时候向...

    网页推送pushlet的demo

    Pushlet是基于Java的一种早期的推送技术框架,它利用了 comet 技术,实现了服务器到客户端的双向通信。在本Demo中,我们将深入探讨Pushlet的工作原理和如何实现一个基本的网页推送系统。 首先,我们需要理解什么是...

    PushLet实例,服务器消息推送

    【标题】"PushLet实例,服务器消息推送"指的是一个基于Java技术实现的服务器端消息推送系统,名为PushLet。在互联网应用中,实时性是非常重要的一个特性,例如在线聊天、股票更新、新闻推送等场景。传统的HTTP协议是...

    pushlet实现简单的用户聊天

    在IT行业中,Pushlet是一种基于Java的推送技术,主要用于实现实时的数据传输,尤其是在Web应用中创建实时聊天、通知服务等功能。Pushlet是基于HTTP连接持久化的概念,它允许服务器主动向客户端推送数据,而无需...

    服务器推送——PushLet的应用<一>

    总的来说,PushLet是一个优秀的服务器推送解决方案,它简化了实时通信的实现,为开发者提供了高效且易于使用的工具。通过学习和应用PushLet,开发者可以快速构建出具有实时功能的Web应用,提升用户体验,满足现代...

    pushlet2.0.4-demo-增加指定人推送

    Pushlet 2.0.4 是一个官方发布的消息推送框架,它为开发者提供了一种高效、可靠的实时通信机制,用于在服务器与客户端之间传递数据。在最新的版本 2.0.4 中,该框架引入了一个重要的新特性——支持指定用户推送,这...

Global site tag (gtag.js) - Google Analytics