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请求-响应模型不同,服务器推技术允许服务器主动地将数据发送到客户端,而无需客户端发起新的请求。这一机制极大地...
DWR是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
服务器推送技术是Web开发中的一种重要机制,旨在克服传统HTTP协议的局限性,尤其是解决服务器向客户端实时推送信息的问题。...随着技术的进步,未来的服务器推送技术将会更加高效、可靠且易于使用。
DWR的独特之处在于它的“反转Ajax”(Reverse Ajax)概念,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。这在股票实时显示等需要即时更新信息的应用场景中非常有用。 在"股票实时显示"的应用...
【Pushlet服务器推技术】是一种实时通信技术,主要用于构建能够实时推送信息的Web应用程序,比如聊天、股票更新、在线游戏等场景。Pushlet是基于Java的开源项目,它利用了HTTP的长连接特性,实现了服务器主动向...
DWR使用一种称为Reverse Ajax或Comet的技术来实现服务器推送。它创建了一个持久化的HTTP连接,使得服务器可以在准备好新数据时立即发送,而不需要等待客户端的请求。DWR提供了一种简单的方式来注册JavaScript函数,...
而服务器推送技术允许服务器在客户端未发起请求的情况下,主动将数据发送到客户端,从而实现实时更新和即时通讯。 在Web开发中,服务器推送主要应用于需要实时更新信息的场景,如股票交易、在线聊天、游戏状态更新...
使用DWR服务器推技术的步骤大致包括: 1. **配置DWR**:在Web应用的`web.xml`中配置DWR的Servlet,设置允许的类和方法。 2. **创建Java后台服务**:编写服务端代码,处理业务逻辑,并准备要推送的数据。 3. **创建...
在这个"**dwr实现的服务器推demo**"中,我们看到一个实例,展示了如何利用DWR的技术来实现实时的、无需刷新的服务器推送功能。 服务器推是一种技术,它允许服务器主动地将数据发送到客户端,而不需要客户端(通常是...
### 基于服务器推送技术建立在线交流平台的探讨与实现 #### 引言与背景 随着互联网技术的迅速发展,人们的沟通方式发生了显著变化,越来越多的交互活动转移到了线上。传统的B/S(浏览器/服务器)模式下,信息传递...
DWR通过使用ActiveXObject和IFrame等技术,能够在这些旧版本的IE上实现Ajax和服务器推送功能。同时,开发者需要注意IE的内存管理和兼容性问题,确保应用程序的稳定性和性能。 4. **DEMO项目结构** - `.classpath`...
为了简化使用和未来兼容其他推送技术(如WebSocket),通常会对Pushlets进行接口封装,定义一个Channel服务。这个服务允许服务器端通过JS客户端建立长连接,实现实时消息推送。JS客户端API包括init()、open()、...
Comet 是一种用于 Web 应用程序的异步通信技术,它通过 HTTP 长连接实现服务器向客户端推送数据,而不是传统的由客户端发起请求获取数据。这种技术解决了传统Web应用中实时性不足的问题,使得Web应用能够实现类似...
本文主要讨论了一种基于Comet服务器推技术的Pushlet实现,这种技术允许服务器向客户端实时推送数据,而无需客户端持续发起请求。 Comet技术是一种优化的Web通信模式,其核心思想是利用持久化HTTP连接来实现实时数据...
在Web开发中,服务器向客户端实时推送数据是常见...在名为"serverPush"的压缩包文件中,可能包含了实现上述各种服务器推送方式的JAVA代码示例,开发者可以通过阅读和学习这些代码,进一步理解并掌握服务器推送的技术。
**DWR(Direct Web Remoting)服务器推送技术详解与WebQQ实现** DWR,全称为Direct Web Remoting,是一种在JavaScript和Java之间进行远程方法调用(Remote Method Invocation,RMI)的技术,允许Web应用程序实现...
【基于服务器推送技术的实时电话监控模型】是一种创新的IT解决方案,它利用现代网络技术和编程语言,实现了对电话通信的实时监控与管理。这个模型主要依赖于B/S(Browser/Server,浏览器/服务器)架构,结合了服务器...
服务器推送技术,也称为Server Pushing,是一种网络通信模式,允许服务器主动向客户端...总的来说,服务器推送技术是现代Web应用中的关键技术之一,它极大地丰富了Web交互的可能性,为用户提供更加实时、动态的体验。
RTMP(Real-Time Messaging Protocol)推流服务器是一种用于实时音视频传输的技术,广泛应用于直播平台。这个"RTMP推流服务器.rar"压缩包文件包含了实现RTMP推流功能的源码,意味着我们可以深入理解并自定义RTMP...
2. 使用Ajax实现客户端的异步通信,当用户发送消息时,将消息通过Ajax发送到服务器。 3. 在服务器端,JSP接收到消息后进行处理,可以将消息保存到数据库或队列中,并触发服务器推送。 4. 实现服务器推送,可以通过...