前段时间,做了一个web im。当时首先考虑基于xmpp协议做,可是时间比较紧,不可能在规定的时间里做好服务器端,而一些基于xmpp协议开发的即时消息服务器都是收费的,所以只好否定了这个方案。后来在网上找了一下,发现了一个开源的东西Pushlet 。它是comet技术的一种实现,利用一个servlet,将服务器端的动态对象主动推送到客户端浏览器。详细内容我就不在这里说了,网上又一篇Think in Pushlet的文章写得非常详细。以下是我的一些心得体会,与大家分享分享:
1、pushlet虽然名字带了一个push,但实际上只实现了poll,需要客户端不断的轮询服务器,如果大量的用户同时在线的话,那么服务器开销会很大,响应时间也会变得很长。网上搜了一下,也没有什么好的解决方案。jetty的Continuation到是提供了一种思路,但这比须把应用部署在jetty上面。
2、用JS写了一个队列用来存放收到的消息,然后用每个发送方作为key,消息队列做为value,存放在自定义的一个hashtable里面。
3、由于时间比较紧,很多js代码都没考虑不同浏览器下是否支持的问题,比如为了不让客户端的拦截工具把消息窗口拦截,用了showModelessDialog来打开窗口,但是这个方法firefox又不支持。因此这后这个web im就只能用在IE 6以上的浏览器下面。
分享到:
相关推荐
【基于Pushlet Web实时聊天系统】是一个利用Pushlet框架构建的在线实时通信应用。Pushlet是一种服务器推送(Server-Sent Events)技术,它允许服务器主动将数据推送到客户端,而不是传统的客户端轮询请求数据的方式...
总结来说,"一个基于pushlet推送的小例子"是一个展示如何在Tomcat服务器上利用Pushlet框架实现Comet技术的实例。通过这个例子,开发者可以学习到如何构建和部署一个能够进行服务器端数据推送的Web应用,这对于需要...
基于pushlet实现的comet技术的服务器推技术。新增了接口和实现类,可直接调用点对点,群发等功能。注意Session类当中create方法中王hashtable当中存入当前登录用户id和sessionid键值对。启动后会发现的。
- 在客户端,创建一个JavaScript或者AJAX客户端,用于与Pushlet Server建立连接,并监听接收的数据。 - 服务器端需要监控数据源,当有新数据时,通过Pushlet API将消息发送给已连接的客户端。 - 客户端接收到推送...
web im 类似 web qq 实现的聊天 ,里面实现了好有上下线提示 信息发送 (如有分组 留言 群聊 查看留言 都已经实现 在这里需要使用到数据库),这些功能本人直接加入项目中了, 由于这里没很多时间去整理 所以整理了...
综上所述,这个项目提供了一个完整的基于Pushlet_Chat技术的群聊实现,特别关注了中文字符的正确处理,对于需要构建类似系统的开发者来说,具有很高的参考价值。通过深入研究和实践,可以更好地理解和掌握即时通信...
Pushlet的基本工作原理是,客户端的网页包含一个控制层框架和一个表现层框架,控制层通过HTTP连接与Pushlet服务器保持联系,接收JavaScript代码和数据,然后利用JavaScript更新表现层的内容,实现页面的局部更新。...
bsIM.war,基于pushlet WebQq
"pushlet.jar 和示例工程"是一个专注于实现服务器端向客户端主动推送消息的框架,它在Web开发领域中扮演着重要角色。Pushlet框架的设计旨在克服传统的HTTP协议中客户端请求、服务器响应的被动通信模式,转而采用一种...
Pushlet 2.0.3是该技术的一个特定版本,可能包含以下关键特性: 1. **持久连接**:通过保持一个开放的HTTP连接,服务器可以在任何时候向客户端发送数据,而无需等待新的HTTP请求。 2. **多路复用**:一个连接可以...
2. 创建客户端:客户端通常是一个Web应用,使用JavaScript或者Java Applet来实现与Pushlet服务器的交互。你需要编写代码创建一个持久的HTTP连接,并注册订阅感兴趣的事件。 3. 编写服务器端逻辑:在服务器端,你...
在你提供的"myPushlet"压缩包中,很可能包含了一个简单的Pushlet应用示例。这个例子通常会展示如何创建Publisher发布数据,以及如何作为Subscriber接收这些数据。你可以按照以下步骤操作: 1. 解压"myPushlet"文件...
PushLet是一种基于Java的实时推送技术,用于在...总的来说,这个PushLet实例是一个宝贵的教育资源,它提供了从理论到实践的桥梁,让开发者能够在实际操作中理解并掌握PushLet的使用,从而提升其在实时Web开发中的技能。
5. **bsIM.war**:这是一个WAR文件,通常包含了一个Java Web应用程序的全部部署内容,可能是一个使用Pushlet实现的即时通讯(IM)应用示例,可以直接在支持Java的Web服务器上部署运行。 6. **pushlet_文档.doc**:...
然而,需要注意的是,Pushlet 是一个较老的技术,现代Web开发中更多地采用WebSocket或其他现代推送技术,如Server-Sent Events (SSE) 或基于HTTP/2的Push。这些技术提供了更好的性能和兼容性,更适合当前的Web环境。
这里定义了一个名为`pushlet`的Servlet,其类为`nl.justobjects.pushlet.servlet.Pushlet`,并且设置`load-on-startup`为1,意味着服务器启动时就会加载这个Servlet。Servlet映射到`/pushlet.srv`路径,这是客户端与...
2. Pushlet客户端:通常是一个JavaScript或Java小程序,它连接到Pushlet服务器并接收推送的数据。客户端可以订阅特定的事件,当这些事件发生时,服务器会将数据推送到客户端。 3. Pushlet事件:这些是服务器和客户端...
标题中的“pushlet实例以及jar”表明我们即将讨论的是一个基于Pushlet技术的示例项目,其中包含了必要的jar文件。Pushlet是一种轻量级的、基于服务器推送(Server-Sent Events, SSE)技术,用于实现实时数据传输,...
当客户端(例如,一个Web浏览器)与Pushlet Server建立连接后,服务器会保持这个连接打开,直到客户端断开或者服务器端有新的消息需要发送。一旦有新消息,Pushlet Server会立即通过已打开的连接将消息推送给客户端...
总结来说,Pushlet简单示例测试是一个实践性的教程,它涵盖了Pushlet技术的基础应用,包括服务器端的设置、客户端的连接建立以及数据推送的处理。通过这个测试,开发者可以深入理解Pushlet的工作机制,并在实际项目...