DWR反向Ajax:轮询、Comet与PiggyBack解析

3星 · 超过75%的资源 需积分: 10 8 下载量 150 浏览量 更新于2024-09-26 收藏 195KB DOCX 举报
"本文主要介绍了DWR(Direct Web Remoting)框架中反向Ajax的三种技术实现:轮询、Comet和PiggyBack,并详细阐述了每种方式的工作原理和特点。此外,还提到了DWR的active和passive两种工作模式,以及在active模式下的FullStreamingMode、EarlyClosingMode和PollingMode。" DWR是一种Java框架,它允许Web应用实现实时的双向通信,即服务器端能够主动地向客户端推送数据,而不仅仅是响应客户端的请求。反向Ajax是DWR的核心特性,它提供了以下三种技术来实现服务器到客户端的数据推送: 1. **轮询(Polling)**: 轮询是最基础的反向Ajax技术。客户端定时(如每隔几秒)向服务器发送请求,询问是否有新数据。如果有,服务器则返回数据,否则客户端继续等待下一个轮询周期。这种方式简单易用,但效率较低,因为频繁的请求可能导致网络带宽浪费和服务器压力增大。 2. **Comet:基于HTTP长连接的服务器推动**: Comet技术通过保持一个长时间打开的HTTP连接,使服务器能够在数据准备好时立即推送到客户端。客户端发起请求后,服务器不关闭响应,而是持续发送更新数据。Comet提供实时性更强的通信,但可能会消耗更多服务器资源,尤其是当连接数过多时。 3. **PiggyBack(回传)**: PiggyBack机制是在客户端发出请求时,服务器将积压的更新数据一并返回。这种方式在客户端不频繁请求时效率较高,能有效利用已有请求,减少网络开销。然而,它不具备实时性,只有在客户端触发请求时才能获取更新。 DWR中的reverseAjax分为active和passive两种模式。默认情况下,DWR采用passive模式,即PiggyBack机制。在active模式下,DWR支持Comet和Polling,以实现数据的及时响应。 - **active模式**包含三种子模式: - **FullStreamingMode**:这是active模式的默认设置,类似于Comet,服务器保持连接状态并定期检查浏览器是否活跃。通过在`web.xml`配置和在页面上设置`dwr.engine.setActiveReverseAjax(true)`来启用。 - **EarlyClosingMode**:与FullStreamingMode类似,但如果没有新的响应,连接会在1分钟后关闭。最大等待时间可通过`maxWaitAfterWrite`参数调整,默认60秒。 - **PollingMode**:在这种模式下,客户端和服务器间不是持续连接,而是按需进行轮询。 需要注意的是,active模式可能导致服务器资源紧张,DWR有内置机制来管理连接数量,当服务器负载过高时,会自动调整连接策略。然而,对于大规模并发用户场景,应谨慎使用active模式,以防止服务器过载。 DWR提供了丰富的反向Ajax解决方案,开发者可以根据实际需求选择合适的策略,实现高效的服务器到客户端数据推送。