`
nowwondering
  • 浏览: 19516 次
  • 来自: 深圳
社区版块
存档分类
最新评论

pushlet_向所有在线用户发送消息的单线程应用

阅读更多

第一步:

 

pushlet是"服务器推"技术的一个开源框架,利用它可以实现Http长连接这项需求.

 

1.下载pushlet最新版,pushlet下载地址为:

http://sourceforge.net/projects/pushlets/files/pushlets/2.0.4/pushlet-2.0.4.zip/download

 

2.将下载后的zip包解压缩,看到如下目录结构:

 

3.新建立web项目,将lib目录中的pushlet.jar文件添加到项目的lib目录中

 

4.将webapps\pushlet\WEB-INF\classes目录中的pushlet.properties和sources.properties文件添加到项目的src目录中

 

5.将webapps\pushlet\lib目录中的ajax-pushlet-client.js文件添加到项目的根路径中

 

6.添加完成后,目录结构如下图所示:

 

第二步:

 

1.修改web.xml文件,添加如下片段:

    <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>

 

2.定义推送源HelloWorldPushlet,代码如下片段:

package com;

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

public class HelloWorldPushlet implements Serializable {
    public static class PullSource extends EventPullSource {
        @Override
        protected long getSleepTime() {
            return 5000;
        }

        @Override
        protected Event pullEvent() {
            Event event = Event.createDataEvent("helloworld");
            event.setField("msg", "Hello World!!!");
            return event;
        }
    }  
}

 

3.修改sources.properties文件,为下图所示:

 

4.新建jsp页面,添加js文件,注册事件,回调函数,如下图所示:

 

5.在浏览器中浏览http://localhost:8080/pushlet_pushall/,可以看到如下图所示的结果,表示成功(Firebug看到连续的请求):

  • 大小: 43.9 KB
  • 大小: 8.6 KB
  • 大小: 2.7 KB
  • 大小: 3.5 KB
  • 大小: 26.5 KB
1
6
分享到:
评论
6 楼 Reset 2012-10-29  
还是用Websocket吧...
5 楼 cuisuqiang 2012-10-08  
Reset 写道
Event event = Event.createDataEvent("helloworld");
event.setField("msg", "Hello World!!!");
return event;


直接这样就OK了,没必要 用定时休眠搞吧 

因为是用轮询实现的推送!http://cuisuqiang.iteye.com/
4 楼 Reset 2012-08-24  
亲啊 js-pushlet-client.js 才是长连接 那个ajax的就是轮询 坑爹了
3 楼 Reset 2012-08-24  
坑爹啊 这是轮询...
2 楼 Reset 2012-08-24  
必须要实现 EventPullSource  ?
1 楼 Reset 2012-08-24  
Event event = Event.createDataEvent("helloworld");
event.setField("msg", "Hello World!!!");
return event;


直接这样就OK了,没必要 用定时休眠搞吧 

相关推荐

Global site tag (gtag.js) - Google Analytics