协作平台的webim 是采用pushlet来做的,Pushlet
是一种comet
实 现:在Servlet机制下,数据从server端的Java对象直接推送(push)到(动态)HTML页面,而无需任何Java applet或者插件的帮助。它使server端可以周期性地更新client的web页面。
用 一个例子 介绍下pushlet 原理(完整代码见附件):push-js-stream.html
l是主框架文件,它以HTML Frame的形式包含其它两个页面。push-js-stream-pusher.jsp是一个JSP,它执行在server端,此文件内容如下:
/** Start a line of JavaScript with a function call to parent frame. */
String jsFunPre = " ";
try {
// Every three seconds a line of JavaScript is pushed to the client
for (int i=1; i < 50; i++) {
out.print(jsFunPre+" "+i+jsFunPost);
out.flush();
}
for (int i=1; i < 10; i++) {
// Push a line of JavaScript to the client
out.print(jsFunPre+"Page "+i+jsFunPost);
out.flush();
// Sleep three secs
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// Let client display exception
out.print(jsFunPre+"InterruptedException: "+e+jsFunPost);
}
}
} catch (Exception e) {
// Let client display exception
out.print(jsFunPre+"Exception: "+e+jsFunPost);
}
out.print(jsFunPre+"DONE "+jsFunPost);
可以看到server端不断推送js片段,而js片段在客户端是可以执行的,从而完成了从server端的Java到浏览器中的JavaScript的回调。
pushlet有三种连接方式stream,pull和poll。
stream就是开启一个长连接,服务端有数据是将数据推送到客户端。
pull/poll 这两种感觉是一样的,pull有推送的意思(默认方式),但是实际使用时还是通过ajax定时查询,感觉还是轮询的意思。
三种连接方式各有优缺点:
stream 好处是有新内容才输出,比较节省带宽等资源,坏处是长期占用了连接,丧失了无状态高并发的特点。
pull/poll 好处是保持了http server的无状态高并发,坏处是大量的pull动作其实是白费的。连接数量很多的话,服务器的压力会很大。
有个概念需要介绍下就是 subscribe (订阅),查看webim第一次请求连接
http://。。。/pushlet.srv?p_event=join-listen&p_format=xml-strict&p_mode=pull&p_subject=/ccs/chat
最后的参数p_subject=/ccs/chat,就是我们订阅的主题,以后的ajax请求都是从这个主题下获取数据。
以后扩展的话,可以添加其他的主题如
/ccs/weather等,在请求时
p_subject可设为/ccs,表示订阅/ccs下面的所有主题。
分享到:
相关推荐
本篇内容主要围绕"Pushlet学习(二) -- Pushlet CookBook部分翻译 + 注释"进行展开,将对Pushlet的工作原理、核心组件以及如何使用Pushlet进行编程进行深入讲解。 1. Pushlet简介: Pushlet是基于HTTP的 Comet 模式...
1. **服务器端配置**:设置Pushlet Server,这可能涉及部署Pushlet的Servlet容器(如Tomcat),配置Servlet映射,以及设置服务器端的Pushlet服务类。 2. **客户端连接**:客户端需要编写JavaScript或Java Applet来...
"pushlet.jar 和示例工程"是一个专注于实现服务器端向客户端主动推送消息的框架,它在Web开发领域中扮演着重要角色。...而提供的压缩包资源则为学习和实践Pushlet提供了便利,是深入研究和应用这一框架的重要资料。
【Pushlet服务器推技术】是一种实时通信技术,主要用于构建...在压缩包文件“pushlet”中,可能包含了实现Pushlet技术的源代码、配置文件和示例应用,供开发者学习和参考,以便在自己的项目中集成和使用Pushlet服务。
1. **源代码**:可能包括Java类,这些类实现了PushLet服务端和客户端的逻辑。服务端可能包含PushLet服务器的启动和管理代码,而客户端代码则负责订阅频道并接收推送的数据。 2. **配置文件**:如XML配置文件,可能...
【服务器推送技术——PushLet应用详解<一>】 在当今的互联网应用中,实时性成为了不可或缺的需求,无论是即时通讯、在线游戏还是股票交易,都需要服务器能够主动向客户端推送信息,而不是传统的请求-响应模式。这...
PUSHLET是一种基于Java技术实现的即时通讯系统,它允许服务器主动向客户端推送数据,而无需客户端持续轮询请求。这种技术在实时性要求高的应用中非常常见,如在线聊天、股票交易、游戏等场景。本实例将展示如何在...
1. **Pushlet框架**:Pushlet是Apache Cocoon项目的一部分,它提供了一种基于HTTP长连接的推送机制。Pushlet使用了Servlet和JavaServer Pages (JSP) 技术,允许开发者创建能够实时更新的Web应用。它的工作原理是...
3. **源码分析**:"pushlet 2.0.3 源码分析(服务器端) .htm" 提供了对Pushlet服务器端代码的深度解读,对于开发者来说,这是一个很好的学习和理解Pushlet内部机制的资源。通过源码分析,可以了解Pushlet如何利用HTTP...
通过这个小例子,你可以直观地了解Pushlet框架的工作流程,并学习如何在自己的项目中集成和使用Pushlet。 **总结** Pushlet框架为Java开发者提供了一种实现服务器到客户端实时数据推送的有效工具,通过克服HTTP的...
"Pushlet-UserUnicast" 是一个专门针对特定用户进行推送技术演示的项目,它为初学者提供了深入了解和学习推送技术的良好平台。Pushlet是一种基于Java的实时数据推送框架,它允许服务器主动向客户端发送数据,而不是...
1. **Java推送**:Java作为一种跨平台的编程语言,提供了多种实现推送服务的方式。在这个demo中,使用了Java进行服务器端的开发,实现了数据的推送功能。 2. **长连接**:在传统的HTTP协议中,每次请求-响应后连接...
通过这个Demo,你可以学习到Pushlet的基本用法,理解服务器推送的实现机制,并为自己的实时Web应用打下基础。然而,Pushlet是较早的推送技术,现在已经有更多先进的解决方案,如WebSocket、Server-Sent Events (SSE)...
【推送技术】 推送技术是Web开发中的一种高级机制,它允许服务器主动向...通过这个例子,开发者可以学习到如何构建和部署一个能够进行服务器端数据推送的Web应用,这对于需要实时交互的系统设计具有重要参考价值。
通过学习和运行这个示例,你可以更好地理解Pushlet的工作机制,并能将其应用于自己的项目中,实现服务器定时向页面推送消息的功能。在实际使用时,还可以根据需求进行定制和优化,例如,添加错误处理和日志记录,...
通过学习和运行示例,可以掌握如何创建推送订阅、发布消息、以及如何在J2ME和JAVA WEB环境中集成Pushlet。 六、社区支持与文档 作为一个开源项目,Pushlet拥有活跃的开发者社区,提供了详细的文档和示例,用户可以...
Pushlet是一个服务器推送框架的实例,它提供了一种实现服务器到客户端数据推送的方法。 Pushlet的核心概念是基于HTTP长连接的 Comet 模式。Comet模式通过长时间保持一个HTTP连接开放,使得服务器可以在适当的时候向...
标题中的“pushlet”是指Pushlet,一种基于Comet技术的服务器推送机制。Comet是一种Web应用程序模型...通过研究提供的源码和工具,开发者可以学习如何构建一个简单的实时消息推送系统,特别是针对特定在线用户的推送。
- **Pushlet CookBook**:《Pushlet学习(二) -- Pushlet CookBook部分翻译 + 注释.htm》可能是对Pushlet使用手册的中文译文,包含了一些基础用法和实例,注释提供了更直观的理解,帮助开发者快速上手。 3. **发布...
1. Pushlet概述: Pushlet是Java Push技术的一种实现,由Marc Fleury领导的Jboss团队开发。它的核心思想是利用HTTP长连接,使服务器能够在一个连接上持续发送数据,而不是等待客户端发出新的请求。这样,服务器可以...