在ajax-pushlet-client.js文件中找到以下代码:
_getWebRoot: function() {
/** Return directory of this relative to document URL. */
if (PL.webRoot != null) {
return PL.webRoot;
}
//derive the baseDir value by looking for the script tag that loaded this file
var head = document.getElementsByTagName('head')[0];
var nodes = head.childNodes;
for (var i = 0; i < nodes.length; ++i) {
var src = nodes.item(i).src;
if (src) {
var index = src.indexOf("ajax-pushlet-client.js");
if (index >= 0) {
index = src.indexOf("lib");
PL.webRoot = src.substring(0, index);
break;
}
}
}
return PL.webRoot;
},
本函数,有的版本是这样写的:
_getWebRoot: function() {
/** Return directory of this relative to document URL. */
if (PL.webRoot != null) {
return PL.webRoot;
}
//derive the baseDir value by looking for the script tag that loaded this file
var head = document.getElementsByTagName('head')[0];
var nodes = head.childNodes;
for (var i = 0; i < nodes.length; ++i) {
var src = nodes.item(i).src;
if (src) {
var index = src.indexOf("lib/ajax-pushlet-client.js");
if (index >= 0) {
PL.webRoot = src.substring(0, index);
break;
}
}
}
return PL.webRoot;
},
改成用橙色写的就可以了。
还有找不到pushlet.properties文件,把文件放在src根目录下,就可以了,不要放在WEB-INF下。
java相关代码:
package com.example.demo;
public class HelloWorldPlushlet extends EventPullSource implements Serializable{
/**
*
*/
private static final long serialVersionUID = 4387401648231574196L;
// 休眠五秒
@Override
protected long getSleepTime() {
return 5000;
}
@Override
protected Event pullEvent() {
Event event = Event.createDataEvent("
/你的监听事件以'/'开头");
event.setField("mess", "hello,world!Plushlet!");
return event;
}
}
sources.properties文件内容:
#类的全路径名
source7=com.example.demo.HelloWorldPlushlet
pushlet.properties文件内空:
#
# Pushlet configuration.
# Place this file in the CLASSPATH (e.g. WEB-INF/classes) or directly under WEB-INF.
#
# $Id: pushlet.properties,v 1.13 2007/12/07 12:57:40 justb Exp $
#
#
#
#
config.version=1.0.2
#
# CLASS FACTORY SPECIFICATION
#
# Change these if you want to override any of the core classes
# within the Pushlet framework with your own custom classes.
#
# Examples:
# - custom SessionManager for authorisation
# - maintain lists of active subjects (topics)
# - send events on subscription
# - plug in custom logging like log4j
# Note that you must maintain the semantics of each class !
# Below are the default properties for the core classes.
controller.class=nl.justobjects.pushlet.core.Controller
dispatcher.class=nl.justobjects.pushlet.core.Dispatcher
logger.class=nl.justobjects.pushlet.util.Log4jLogger
# logger.class=nl.justobjects.pushlet.util.DefaultLogger
sessionmanager.class=nl.justobjects.pushlet.core.SessionManager
session.class=nl.justobjects.pushlet.core.Session
subscriber.class=nl.justobjects.pushlet.core.Subscriber
subscription.class=nl.justobjects.pushlet.core.Subscription
# sessionmanager.maxsessions=200
#
# DISPATCHER
#
# TODO: allow properties to be maintained in
# a user dir
# config.redirect=/etc/pushlet.properties
#
# LOGGING
#
# log level (trace(6) debug(5) info (4), warn(3), error(2), fatal(1))
# default is info(4)
log.level=4
#
# LOCAL EVENT SOURCES
#
# should local sources be loaded ?
sources.activate=true
#
# SESSION
#
# algoritm to generate session key:
# values: "randomstring" (default) or "uuid".
# session.id.generation=uuid
session.id.generation=randomstring
# length of generated session key when using "randomstring" generation
session.id.size=10
# Overall session lease time in minutes
# Mainly used for clients that do not perform
# listening, e.g. when publishing only.
session.timeout.mins=5
#
# EVENT QUEUE
#
# Properties for per-client data event queue
# Size for
queue.size=24
queue.read.timeout.millis=20000
queue.write.timeout.millis=20
#
# LISTENING MODE
#
# You may force all clients to use pull mode
# for scalability
listen.force.pull.all=false
#
# Comma-separated list of User Agent substrings.
# Force these browsers to use pull mode, since they
# don't support JS streaming, matching is done using
# String.indexOf() with lowercased agent strings
# use multiple criteria with &.
#
listen.force.pull.agents=safari
#
# PULL MODE
#
# time server should wait on refresing pull client
pull.refresh.timeout.millis=45000
# minimum/maximum wait time client should wait before refreshing
# server provides a random time between these values
pull.refresh.wait.min.millis=2000
pull.refresh.wait.max.millis=6000
#
# POLL MODE
#
# time server should wait on refresing poll client
poll.refresh.timeout.millis=60000
# minimum/maximum wait time client should wait before refreshing
# server provides a random time between these values
poll.refresh.wait.min.millis=6000
poll.refresh.wait.max.millis=10000
jsp页面内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Pragma" content="no-cache" />
<script type="text/javascript" src="ajax-pushlet-client.js"></script>
<script type="text/javascript">
PL._init();
PL.joinListen('
你的监听事件以'/'开头');
function onData(event) {
alert(event.get("mess"));
// 离开
// PL.leave();
}
</script>
</head>
<body>
<center>
<h1>
my first pushlet!
</h1>
</center>
</body>
</html>
分享到:
相关推荐
压缩包wjw465150-Pushlet-09f5559可能包含了Pushlet框架的源码、文档、配置示例和一个运行示例工程。源码可以帮助开发者理解内部工作原理,以便进行定制和扩展。文档通常会详述如何配置和使用Pushlet,包括设置...
这通常包括下载Pushlet源码,配置服务器环境(例如Tomcat),以及创建必要的证书以支持HTTPS连接。在官方示例中,一般会包含服务器端的推送服务实现、客户端的订阅逻辑以及一个简单的消息发布者。 服务器端,...
pushlet源码demo,提供有需要的同学学习,如有更好的实现或建议,欢迎提出
提供的压缩包文件包括了Pushlet框架的源码、使用文档和示例,可以帮助开发者快速理解和应用Pushlet。例如,"使用Pushlet来实现服务器端向客户端推送信息.doc"文档会详细解释如何配置和使用Pushlet Server来发送数据...
3. **安装与配置**:指导如何下载Pushlet源码,配置开发环境,如Java运行环境(JRE)和构建工具(如Ant或Maven)。 4. **运行示例**:展示一个简单的应用示例,可能包括创建一个推送服务器端点,编写客户端连接脚本...
在压缩包文件"mypushlet"中,可能包含了Pushlet的源码和示例项目。通过查看源码,你可以理解Pushlet的工作流程,包括服务器端的`PushletServlet`、`PushletSession`等关键类,以及客户端如何使用`PushletClient`建立...
综上所述,这些资源为学习和使用Pushlet提供了全面的支持,包括理论介绍、源码分析、实践示例和测试材料。对于想要深入理解和应用Comet技术,尤其是使用Java实现服务器推送的开发者而言,这些都是非常宝贵的参考资料...
标题中的“pushlet实例以及jar”表明我们即将讨论的是一个基于Pushlet技术的示例项目,其中包含了必要的jar文件。Pushlet是一种轻量级的、基于服务器推送(Server-Sent Events, SSE)技术,用于实现实时数据传输,...
开发者可以通过阅读源码了解其工作原理,参考示例快速入门,通过配置文件定制Pushlet Server的行为。 总的来说,Comet框架的Pushlet实现是一种高效的服务器推送技术,它通过持久化连接解决了传统Web应用实时性不强...
【描述】提到的是一个经过个人修改的Pushlet版本,这个版本增加了多播和单播的功能。多播是指服务器可以同时将信息推送给多个客户端,适用于广播消息或通知的场景;单播则是服务器仅向特定的单一客户端推送信息,...
至于“源码”和“工具”标签,表明这个压缩包可能包含了Pushlet的源代码示例和一些辅助工具,例如用于测试或部署的脚本。这些资源可以帮助开发者更深入地理解和实现类似的功能,或者在现有项目中集成Pushlet。 在...
5. **文档**:除了源码,通常还会有一份文档,解释Pushlet的工作原理、如何配置和运行服务器,以及如何在项目中集成Pushlet。 6. **库文件**:可能包含必要的库文件,如JAR包,供开发者在自己的Java项目中引用...
5. Pushlet源码分析: 了解Pushlet的源码可以帮助我们更好地理解其实现机制,包括如何管理HTTP连接、数据序列化和反序列化、以及错误处理等。源码研究对于定制Pushlet的行为或扩展其功能非常有价值。 6. Pushlet...
压缩包内的“pushlet-2.0.2”可能包含了源码、编译后的类库、配置文件、示例应用以及相关的用户指南和API文档。开发者可以通过解压文件,阅读文档,运行示例来学习如何在自己的项目中使用Pushlet2.0.2进行服务器推送...
标题中的“通过推送机制(Tomcat comet,pushlet)实现进度条”涉及到的是Web应用中的一种实时通信技术,主要用于提供动态更新和用户交互。这里主要介绍Tomcat的Comet和Pushlet技术,以及如何利用它们来创建一个...
- 示例代码展示如何创建Pushlet服务器和客户端 - 遇到的问题和解决方法 - 性能优化和扩展性考虑 学习和理解Pushlet的源码,可以帮助开发者掌握服务器推送技术,提升Web应用的实时性,同时也可以为自定义实时通信...
这可能需要修改Pushlet源码或在Servlet配置中指定。 3. 在发送中文数据时,确保数据已经被正确地编码为字节流,然后再传递给Pushlet进行推送。 在提供的项目说明文档中,应当包含了具体的配置和代码示例,指导如何...
【标题】"Ext demopushlet + Extjs 聊天室v0.9 (含源码)" 是一个基于Web的实时聊天应用示例,它整合了Pushlet技术和ExtJS库,提供了完整的源代码供开发者学习和参考。Pushlet是一种推送技术,用于实现实时数据从...