博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pushlet的简单使用
阅读量:5267 次
发布时间:2019-06-14

本文共 2578 字,大约阅读时间需要 8 分钟。

【转载】原文地址:

pushlet是comet的一个实现框架,在Servlet机制下,数据从server端的java对象直接推送(push)到html页面,无需插件的支持。至于comet和ajax的区别什么的,大家上网看一下即可,这里不做太多说明。

首先去下载pushlet,下载地址:,我下载的是一个当下最新的版本2.0.4。下面以一个例子做下说明,详细的可以看一下pushlet自身带的例子,源码也不是很复杂,包括几个js文件。有空大家看看源码可能更好些。

首先建立一个web工程projPushlet,将pushlet.jar放到lib目录中,引入到工程。并且将pushlet.propertiessources.properties两个文件拷贝到WEB-INF目录中去。工程的目录结构如图示

我们一般只需要对sources.properties进行修改即可。创建的消息源必须在这个文件中进行配置。消息源需要实现EventSource接口

先看一下web.xml文件的servlet配置

index.jsp
pushlet
nl.justobjects.pushlet.servlet.Pushlet
1
pushlet
/pushlet.srv

  注意,缺省不需要修改<url-pattern>/pushlet.srv</url-pattern>,如果修改,需要在对应的js文件中也要修改。pushlt缺省就是通过pushlet.srv触发servlet的。

==========================================

看一下index.jsp这个文件的内容

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>      My JSP 'index.jsp' starting page	
This is my first pushlet.

其中,PL._init(); 是对pushlet的初始化,触发web.xml中的servlet。其中,它下面的那行特别重要,这里的监听的主题,必须在sources.properties中配置的对象中声明这个主题。sources.properties配置着事件源(EventSources),在服务器启动时会自动激活。可以通过服务器的启动记录查看的到。可以将这个文件放到WEB-INF目录下面或者classess目录下面都可以。(详细可以看sources.properties内的注释)

然后看一下sources.properties这个文件内容。如下图示:

注意,source1是系统缺省自带的,source2是我自己配置的,并且在index.jsp中的脚本中,配置的/zhaoyang/hi是和这儿是对应的。具体是这样的。HwPlushlet是com.css.HelloWorldPlushlet对象的一个内部类,并且继承EventPullSource接口。大家看一下HelloWorldPlushlet.java就全明白了。代码如下:

package com.css; import java.io.Serializable; import nl.justobjects.pushlet.core.Event; import nl.justobjects.pushlet.core.EventPullSource; public class HelloWorldPushlet implements Serializable{
static public class EventPullSource extends EventPullSource{
@Override protected long getSleepTime() {
return 1000; } @Override protected Event pullEvent() {
Event event = Event.createDataEvent("/zhaoyang/hi"); event.setField("hw", "hello,world"); return event; } } }

 

 在上面的代码中,可以看到创建事件(createDataEvent)的主题(aSubject)是/zhaoyang/hi,和index.jsp中PL.joinListen('/zhaoyang/hi'); 是对应的。EventPullSource有两个方法,一个是设置休眠时间(getSleepTime),另一个是创建事件(pullEvent)。其中,业务部分就写在pullEvent()方法中即可,这个方法会被定时调用

这样这个基本的例子就OK了,运行一下,看看吧。

 

 访问http://localhost:8080/ 会定时弹出alert窗口,窗口的内容就是 event.setField("hw","hello,world");,呵呵。如图:

如图:

如果这个页面关闭了,服务器会自动取消订阅,和移除对应的session信息。下面是我关闭页面后,服务器端的输出信息,如图:

转载于:https://www.cnblogs.com/lihuiyy/archive/2011/12/01/2270392.html

你可能感兴趣的文章
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
Windows 2003全面优化
查看>>
URAL 1002 Phone Numbers(KMP+最短路orDP)
查看>>
web_day4_css_宽度
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>