`

(zt)Pushlet的二次开发(三)

阅读更多
1 Pushlet自带事件源分析
       Pushlet源代码中自带了一些事例,对这些例子的分析有助于编写自己的代码。Pushlet源代码提供了一种事件源机制,即将一些服务作为事件源,通过这些源产生各种各样的事件,然后加入到相应的Session中。

       1)Servlet初始化EventSourceManager。在Pushlet这个Servlet初始化时,会对SessionManager、Dispatcher进行实例初始化,它们是通过单件模式构造的;然后调用EventSourceManager这个工具类(称为工具类是因为它由一组static方法组成,每一个方法单独完成一项功能)读取source.properties配置文件,对该配置文件中的source类进行初始化。Pushlet源代码中配置了五个事件源类,且都是一内部静态类,加载后直接调用相应的方法,而它们又被设计为线程,所以在系统初始化后它们就直接在系统中不停地以线程方式运行。

       2)事件源代码分析:

       EventSource:事件源接口;

       EventPullSource:抽象类,实现了EventSource和Runnable,定义了抽象方法getSleepTime()和pullEvent();在线程的run()方法中实现了将事件分发到相应的Session;

       PingEventPullSource:继承了EventPullSource抽象类,实现了两个抽象方法,即线程睡眠时间和产生Event。

       3)核心是Dispatcher将产生的事件推送到各个Session中。二次开发时,如果不是以这种系统源的方式推送,可以自己编写相应的事件生成器,然后推送到相应的Session中。

2 二次开发
       2.1 二次开发需求
       Pushlet的需求,也就是需求以“推送”的方式向客户端发送的信息,主要的有服务器端的一些服务、实时类信息推送的,如天气、实时短消息、一些定制类服务等。

       2.2 二次开发关键点
       Pushlet二次开发过程中关键一点是如何构建数据事件源以及如何将事件推送给特定的客户端。因此可能需要修改的关键点有:

       1)事件源。这里的事件源可以是pushlet定义的EventSource,也可以是根据特定业务需求产生的事件源。其实所谓的事件源即如何构建事件,较多的情况及新建Event对象。

       2)Session修改。默认情况下Session的Id都是随机产生的,但是实际业务需求可能是要求将Session与特定的用户绑定在一起,因此该标识可能就需要另外修改。

       3)特定推送。这里的推送方式可能有针对特定用户、特定用户群、广播推送等,这需要按实际进行修改。

       4)分布式处理。Pushlet适合在同一台服务器上运行,但是如果用户数量大,可能需要将用户进行分组置于不同的服务器内,而不同的服务器间如何通信也是需要另外编码实现的。

       基实pushlet只是实现了一种框架,其内包括了服务器端的池模式及ajax实现的服务器推技术,因此其技术难度实际上并不是很大,详细阅读一下源代码即可分析清楚。
分享到:
评论

相关推荐

    pushlet的笔记

    - **Pushlet的二次开发**:《(zt)Pushlet的二次开发(二).htm》和《(zt)Pushlet的二次开发(三).htm》是关于如何扩展和定制Pushlet的教程,涵盖了可能遇到的问题和解决方案,为有经验的开发者提供了进一步的实践指导...

    pushlet

    Pushlet的核心组件是Pushlet Server和Pushlet Client。Pushlet Server作为服务端,接收并处理客户端的连接,当有新的数据可用时,会主动将数据推送到已经建立连接的客户端。Pushlet Client则是在用户端运行的程序,...

    pushlet 之 Pushlet使用手把手实例

    二、Pushlet 工作原理 1. 客户端连接:客户端通过建立一个持久的HTTP连接到Pushlet服务器,这个连接保持打开状态,直到客户端或服务器端关闭。 2. 注册订阅:客户端向服务器发送订阅请求,指定感兴趣的事件或数据。...

    pushlet jar包下载

    服务器推 pushlet 服务器推 pushlet 服务器推 pushlet 服务器推 pushlet

    pushlet简单配置应用

    Pushlet是一种基于Java的实时数据推送技术,由荷兰JustObjects公司开发。Pushlet库的核心功能是实现实时的服务器向客户端推送数据,而无需客户端频繁发起请求,这大大提高了网络应用的效率和用户体验。以下是对...

    服务器推送pushlet讲解

    二、Pushlet框架 Pushlet框架是Comet技术的一个具体实现,由Jaekson和Grizzly项目开发。它是一个轻量级的、可扩展的框架,支持多种推送模式,如长轮询、HTTP流和HTTP片段。Pushlet的核心概念包括Pushlet服务器、...

    PushLet实例,可直接运行

    PushLet是一种基于Java的实时推送技术,用于在...总的来说,这个PushLet实例是一个宝贵的教育资源,它提供了从理论到实践的桥梁,让开发者能够在实际操作中理解并掌握PushLet的使用,从而提升其在实时Web开发中的技能。

    pushlet.jar 和示例工程

    "pushlet.jar 和示例工程"是一个专注于实现服务器端向客户端主动推送消息的框架,它在Web开发领域中扮演着重要角色。Pushlet框架的设计旨在克服传统的HTTP协议中客户端请求、服务器响应的被动通信模式,转而采用一种...

    pushlet实现简单的用户聊天

    通过下载和分析提供的源代码,你可以深入理解Pushlet的内部机制,并根据需求进行自定义开发,例如增加群聊功能、表情支持、文件传输等。 总之,Pushlet技术为实时通信提供了一种高效且灵活的解决方案,特别适合需要...

    comet 框架 之 pushlet

    Pushlet的核心思想是通过一个持久化的HTTP连接来保持服务器与客户端之间的通信,使得服务器可以在有新数据时立即发送给客户端,而不是等待客户端的下一次请求。这样就大大减少了网络交互的次数,减轻了服务器的压力...

    Pushlet定制开发实践总结(含例程).doc

    Pushlet定制开发实践总结(含例程)

    pushlet服务器推技术例子

    【Pushlet服务器推技术】是一种实时通信技术,主要用于构建能够实时推送信息的Web应用程序,比如聊天、股票更新、在线游戏等场景。Pushlet是基于Java的开源项目,它利用了HTTP的长连接特性,实现了服务器主动向...

    PUSHLET即时通讯工程实例

    10. **dhtmlxTree**:这可能是一个第三方库,用于实现可拖拽的树形视图,常用于构建导航菜单或层次结构的数据展示。 **运行与交互** 部署完成后,启动Tomcat,浏览器访问`http://localhost:8080/pushlet_example/`...

    pushlet例子

    Pushlet是服务器推送技术的一种早期实现,由Jackrabbit项目开发,它基于Java Servlet和JavaServer Pages (JSP) 技术。Pushlet的核心理念是通过长连接保持客户端与服务器之间的通信,从而实现实时数据推送。 Pushlet...

    java web开发中服务器推送pushlet.jar解决中文乱码

    java web开发中服务器推送pushlet.jar解决中文乱码

    Pushlet简单示例测试

    Pushlet是一种基于Java的实时数据推送技术,它允许服务器向客户端主动推送数据,而无需客户端持续不断地轮询请求。在Web应用中,Pushlet能够显著提高用户体验,因为它减少了延迟并优化了服务器资源的使用。本示例...

    pushlet 和comet 资料介绍

    总的来说,Pushlet和Comet技术为Web开发提供了强大的实时交互能力,使得服务器能够主动推送数据到客户端,这对于构建实时聊天、股票报价、在线游戏等应用场景非常有用。虽然Pushlet已经有些年代,但它的设计理念和...

    pushlet文档和项目

    Pushlet项目是由Peter Mularien开发的,它提供了一个简单、轻量级的解决方案,允许服务器端主动向浏览器或其他客户端应用程序发送数据,而无需客户端不断地发起HTTP请求(即长轮询或短轮询)。 在Pushlet框架中,...

    pushlet实例以及jar

    标题中的“pushlet实例以及jar”表明我们即将讨论的是一个基于Pushlet技术的示例项目,其中包含了必要的jar文件。Pushlet是一种轻量级的、基于服务器推送(Server-Sent Events, SSE)技术,用于实现实时数据传输,...

Global site tag (gtag.js) - Google Analytics