Pushlet 是一个开源的 Comet 框架,在设计上有很多值得借鉴的地方,对于开发轻量级的 Comet 应用很有参考价值。
Pushlets的下载地址是 http://www.pushlets.com
Pushlet 使用了观察者模型:客户端发送请求,订阅感兴趣的事件;服务器端为每个客户端分配一个会话 ID 作为标记,事件源会把新产生的事件以多播的方式发送到订阅者的事件队列里。
Pushlet支持ajax,flash,applet等多种形式客户端,其中以ajax的客户端集成相对简单。这里就不在介绍。详细参看实例里面stock部分。
这里只是简单介绍如何创建基于FLASH客户端的使用。
首先创造服务器端程序:
并将pushlet.jar引入到工程,将
pushlet.properties
sources.properties
拷贝到/WEB-INFO/classes目录下,并在sources.properties中填写如下语句
source8=CometDemo.cn.CometDemoPull$CometRatePull
然后创建java文件如下:
-----------------------------------------------CometDemoPull.java
package CometDemo.cn;
import nl.justobjects.pushlet.core.Event;
import nl.justobjects.pushlet.core.EventPullSource;
import nl.justobjects.pushlet.util.Rand;
public class CometDemoPull {
static public class CometRatePull extends EventPullSource{
@Override
protected long getSleepTime() {
return 3000L; //这里是设置了一个轮回的时间间隔
}
@Override
protected Event pullEvent() {
Event event = Event.createDataEvent("/CometDemo/TestRate"); //这里创建一个服务。
event.setField("JPY",Rand.randomInt(1, 100)); //以下是发送到客户端的数据
event.setField("GBR",Rand.randomInt(1, 100));
event.setField("RMB",Rand.randomInt(1, 100));
event.setField("USD",Rand.randomInt(1, 100));
return event;
}
}
}
----------------------------------------------------------------------------------
在web.xml中添加如下servlet影射:
<!-- Define the pushlet servlet -->
<servlet><servlet-name>pushlet</servlet-name><servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- Define the Servlet Mappings. --><!-- The pushlet --><servlet-mapping><servlet-name>pushlet</servlet-name><url-pattern>/pushlet.srv</url-pattern></servlet-mapping>
=================================以上服务器端完成。
然后是flash客户端
这里我们原来pushlet的flash例子基础之上进行修改。原来的例子没有发送数据只是保持和服务器连接。这里将他修改为接受自定义数据的flash客户端
代码修改如下:
------------------------------------------------------------flash
function display(text) {
panel = panel+text+newline;
panel.scroll = panel.maxscroll;
}
function displayEvent(xmlObject) {
attributes = xmlObject.attributes;
for (var j in attributes) {
text = text + " " + j + "=" + attributes[j];
}
display(text);
}
var eventXML;
var intervalID;
var sessionID;
var host = "http://localhost:8080/CometDemo";
var path = "/pushlet.srv?p_event=join-listen&p_subject=/CometDemo/TestRate&p_format=xml-strict&p_mode=pull";
var refreshPath="/pushlet.srv?p_event=refresh&p_id="
loadXML(host, path);
function loadXML(host, path) {
url = host + path;
eventXML = new XML();
eventXML.ignoreWhite = true;
eventXML.onLoad = myLoad;
eventXML.load(url);
clearInterval(intervalID);
}
function myLoad(ok) {
if (ok == true) {
handleEvents(eventXML);
} else {
display("Error receiving event");
}
}
function handleEvents(xmlObject) {
var children = xmlObject.firstChild.childNodes;
for (i=0; i
分享到:
相关推荐
【服务器推送技术】 服务器推送技术是一种网络通信模式,它与传统的客户端请求、服务器响应的HTTP协议有所不同。在传统的HTTP协议中,客户端(如浏览器)需要主动向服务器发送请求获取数据,而服务器推送技术则允许...
【服务器推技术之Juggernaut】是关于一种实时通信技术的讨论,主要集中在Web开发领域。Juggernaut是一种用于Rails应用的服务器推送技术,它允许服务器主动向客户端发送数据,而不仅仅是响应客户端的请求,从而实现更...
服务器推送技术是网络应用中的一种优化策略,它允许服务器主动将数据发送到客户端,而不仅仅是响应客户端的请求。这种技术可以显著减少延迟,提高实时性,尤其适用于实时更新的应用,如股票报价、在线聊天或者游戏...
服务器推送技术是Web开发中的一种重要机制,旨在克服传统HTTP协议的局限性,尤其是解决服务器向客户端实时推送信息的问题。...随着技术的进步,未来的服务器推送技术将会更加高效、可靠且易于使用。
ASP.NET的服务器推技术方案一真都很少见应用实例,根据网络上资料的整理开发了一个DLL,可以很方便在应用推技术。 1.取代传统的AJAX方式将得到更好的用户体验,页面仍然无刷新; 2.不再定时不断请求Http请求,降低...
DWR使用一种称为Reverse Ajax或Comet的技术来实现服务器推送。它创建了一个持久化的HTTP连接,使得服务器可以在准备好新数据时立即发送,而不需要等待客户端的请求。DWR提供了一种简单的方式来注册JavaScript函数,...
### 基于服务器推送技术建立在线交流平台的探讨与实现 #### 引言与背景 随着互联网技术的迅速发展,人们的沟通方式发生了显著变化,越来越多的交互活动转移到了线上。传统的B/S(浏览器/服务器)模式下,信息传递...
在本案例中,我们将深入探讨DWR(Direct Web Remoting)2.x版本的服务器推送技术。 DWR是一款开源的Java库,它允许JavaScript与服务器端的Java代码进行双向通信,实现了Ajax(Asynchronous JavaScript and XML)的...
DWR通过使用ActiveXObject和IFrame等技术,能够在这些旧版本的IE上实现Ajax和服务器推送功能。同时,开发者需要注意IE的内存管理和兼容性问题,确保应用程序的稳定性和性能。 4. **DEMO项目结构** - `.classpath`...
为了简化使用和未来兼容其他推送技术(如WebSocket),通常会对Pushlets进行接口封装,定义一个Channel服务。这个服务允许服务器端通过JS客户端建立长连接,实现实时消息推送。JS客户端API包括init()、open()、...
Comet 是一种用于 Web 应用程序的异步通信技术,它通过 HTTP 长连接实现服务器向客户端推送数据,而不是传统的由客户端发起请求获取数据。这种技术解决了传统Web应用中实时性不足的问题,使得Web应用能够实现类似...
在IT领域,构建一个类似QQ聊天的Web程序是一项常见的任务,而这个程序的独特之处在于它采用了服务器端推(Server-Sent Events, SSE)技术而非传统的AJAX(Asynchronous JavaScript and XML)来实现实时更新。...
Comet 有时也称反向 Ajax 或服务器端推技术(server-side push)。其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉 Web 应用程序,尤其是 HTTP 协议,那么您就会...
### Pushlet 服务器推送技术详解 #### 一、引言 在IBM于2008年发布的技术报告中,详细介绍了服务器推送技术——即所谓的Pushlet。这项技术为Web应用程序的发展带来了革命性的变化,尤其是在异步通信方面。本文将...
服务器推送技术是现代Web开发中一个重要的概念,它允许服务器主动向客户端发送数据,而不仅仅是响应客户端的请求。Comet4j就是一种基于Java实现的服务器推送技术框架,旨在简化实时Web应用的开发过程。本资源包包含...