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
分享到:
相关推荐
asp.net 服务器推技术源码,vs2008版本,简单易用
服务器推送技术
DWR是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
服务器内容推送技术服务器内容推送技术服务器内容推送技术服务器内容推送技术服务器内容推送技术
ASP.NET的服务器推技术方案一真都很少见应用实例,根据网络上资料的整理开发了一个DLL,可以很方便在应用推技术。 1.取代传统的AJAX方式将得到更好的用户体验,页面仍然无刷新; 2.不再定时不断请求Http请求,降低...
服务器推技术入门,收集整理的林老师的资源,从最基础的开始介绍,适合入门者
服服务器推送技术服服务器推送技术
java applet方式实现服务器推技术 ,温度监控,dos下打开服务端,tomcat下部署,运行,相当震撼!有介绍!
信息安全技术 服务器安全技术要求和测评准则-编制说明.pdf信息安全技术 服务器安全技术要求和测评准则-编制说明.pdf信息安全技术 服务器安全技术要求和测评准则-编制说明.pdf信息安全技术 服务器安全技术要求和测评...
服务器推送示例 - IE/火狐/谷歌 长链防断实用版 本版本解决了IE下长链接很快断开的问题, 在各浏览器下(已测试IE6/8、火狐、傲游等)均可监控长链接状态, 可重新打开长链接。 已达实用程度。
附件中是本人在网上找的一些关于服务器推技术的网址,个人觉得还行,因为网上说的服务器推很少,尤其是关于PHP的! 简单来说服务器推就是 : 当服务器端有了要更新的数据,就会自动发送到客户端!而不是 由客户端...
dwr服务器推技术 整合struts2,实现多人同一个界面聊天,可以看到信登陆的用户,可以私人聊天和群聊功能
Comet 有时也称反向 Ajax 或服务器端推技术(server-side push)。其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉 Web 应用程序,尤其是 HTTP 协议,那么您就会...
最新的服务器推技术,写聊天室的朋友用这项技术最好不过了。
dwr的反转ajax,实现服务器推送数据。
服务器推技术 dwr的实例
Comet服务器推送技术
DWR服务器推送技术(实时),能实时查看注册的用户和收发的消息