哪位高手用过pushlet,用过没有用过的都进来看看....

javaemailkaifa 2010-10-07 10:21:35
哪位大侠用过pushlet呀?这个东西我怎么一点都不懂呢,惭愧啊,谁有经验给介绍一下,或者是推荐点学习资料,学习方法,如果谁有小例子能给一个小弟万分感谢。
...全文
54 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
javaemailkaifa 2010-10-07
  • 打赏
  • 举报
回复
怎么没人啊?帮顶也行啊!
javaemailkaifa 2010-10-07
  • 打赏
  • 举报
回复
哦,行,我看看,谢谢您的指导。
liuzhengkang 2010-10-07
  • 打赏
  • 举报
回复
pushlet的源代码比较好看懂,你可以看他的源代码,从这里pushlet.servlet.Pushlet,
你就知道他是怎么加载配置文件,启动session manager和event Dispatcher了。

你可以看看这些资料:
http://www.javaeye.com/topic/47661
http://hi.baidu.com/zhumulangma/blog/item/d2de82d4a1bf8208a08bb73e.html
javaemailkaifa 2010-10-07
  • 打赏
  • 举报
回复
高手高手在哪里,快来帮帮我吧!
在使用的过程中发现,如果要在pullEvent()方法中获取参数比较麻烦,查看源码发现nl.justobjects.pushlet.servlet.Pushlet中已经将request参数传进了Session(注意是nl.justobjects.pushlet.core.Session)。但是在session构造的时候没有用到request。看到这里,就大概知道改怎么改了。代码如下: 1. nl.justobjects.pushlet.core.Session,添加了event域和getEvent()方法,修改了public static Session create(String anId, Event anEvent)方法 public static Session create(String anId, Event anEvent) throws PushletException { Session session; try { session = (Session) Config.getClass(SESSION_CLASS, "nl.justobjects.pushlet.core.Session").newInstance(); } catch (Throwable t) { throw new PushletException("Cannot instantiate Session from config", t); } // Init session session.id = anId; session.controller = Controller.create(session); session.subscriber = Subscriber.create(session); session.event = anEvent; return session; } 2. nl.justobjects.pushlet.core.SessionManager,修改了createSession()方法 /** * Create new Session (but add later). */ public Session createSession(Event anEvent) throws PushletException { // Trivial return Session.create(createSessionId(), anEvent); } 3. ajax-pushlet-client.js,PL添加了parameters属性,修改了_doRequest函数,在函数的最后加了如下一段: if(PL.parameters.length > 0) { for (var i = 0; i < PL.parameters.length; i++) { var para = PL.parameters[i]; url += "&" + para.name + "=" + para.value; } } 好了,源代码修改完毕,下面是一个如何传递参数的例子 在页面上js代码: // pushlet服务器推送,更新实时监控模块 var initPushlet = function() { PL.parameters.push({"name":"user-id", "value":"001"); PL._init(); PL.joinListen('/source/event'); }; 在HelloWorldPlushlet的pullEvent()方法调用: Session[] sessions = SessionManager.getInstance().getSessions(); String userId = sessions[0].getEvent().getField("user-id");
Pushlet 是一个开源的 Comet 框架,Pushlet 使用了观察者模式:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。 server端向浏览器client发送通知这种通讯模式在J2EE应用中很常见,通常使 Pushlet服务器端Java类UML图 Pushlet服务器端Java类UML图 用采用RMI、CORBA或者自定义TCP/IP信息的applet来实现。这些技术往往由于复杂而产生诸多不利之处:技术难以实现、存在防火墙限制(因为需要打开非HTTP的通讯端口)、需要额外的server开发和维护。并且除了刷新整个页面或者完全采用applet展示内容之外,很难找到别的方法将client端applet的状态和浏览器的页面内容集成在一起。 Pushlet是一种comet实现:在Servlet机制下,数据从server端的Java对象直接推送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。它使server端可以周期性地更新client的web页面,这与传统的request/response方式相悖。浏览器client为兼容JavaScript1.4版本以上的浏览器(如Internet Explorer、FireFox),并使用JavaScript/Dynamic HTML特性。而底层实现使用一个servlet通过Http连接到JavaScript所在的浏览器,并将数据推送到后者。有关JavaScript版本的知识请参看Mozilla开发中心提供的《JavaScript核心参考》和Stephen Chapman编写的《What Version of Javascript》。 这种机制是轻量级的,它使用server端的servlet连接管理、线程工具、javax.servlet API,并通过标准Java特性中Object的wait()和notify()实现的生产者/消费者机制。原则上,Pushlet框架能够运行在任何支持servlet的server上、防火墙的后面。当在client中使用JavaScript/DHTML时,Pushlet提供了通过脚本快速建立应用、使用HTML/CSS特性集成和布局新内容的便利方法。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧