当前网络应用的发展要求进一步提高在线应用的实时性能,最终用户希望立即更新数据。通过客户端轮询服务器的解决方案已经不能满足用户对实时数据的要求,轮询方式对服务器的压力很大。客户端进程有时需要数十次访问来获取新数据,无缘无故地浪费了大量资源。浏览器和服务器之间的传统交互是浏览器发出请求,服务器返回结果。这种HTTP数据交互模式无法实现客户端数据的实时更新。那么,有没有办法逆转这种数据交互呢?当服务器发出数据更新请求时,基于HTTP的推送技术是解决这类问题的有效方法。1.通用网络数据实时更新解决方案该解决方案的核心思想是在浏览器和服务器之间建立一个长连接。大多数网络服务在返回数据后断开连接。然而,在该解决方案中,将保持数据终端和客户端之间的通信连接,并且数据终端将使用事件注册或类似技术来检测状态变化。一旦捕获到状态变化,数据终端就向输出流输出新数据。该解决方案主要涉及两种HTTP主动推送通知技术,这里暂时称为“页面流”和“Web服务流”。所谓的“页面流”是指在服务器生成的页面上生成数据状态检测。服务器为客户端生成一个页面,但不关闭页面链接。捕捉到数据状态变化后,它将直接作用于客户端的页面。以下是JSP版本:1的“页面流”示例。服务器首先生成一个包含最新信息的div。2.注册事件监控以检测最新信息。当服务器接收到最新数据时,它将向客户端输出%out.flush()}%或更多。这是实现“页面流”的基本途径。该方法基于浏览器能够立即发现服务器的状态变化。这使得更新实时数据和实现双向信息流成为可能。然而,毕竟,这种方法不是使用HTTP的标准方式,它有以下缺点。首先,JavaScript代码随着通信次数的增加而不断增加,导致额外的内存消耗。在富客户端应用程序中,会包含许多数据更新,从而导致JavaScript内存的快速增加。第二,长链路不是一种稳定和有保证的信息传输方式,不可避免地会遇到链路故障的问题。因此,需要一种新的链路恢复方案。第三,服务器不能处理并发链接。第四,客户端必须使用JavaScript,这是浏览器显示数据更新的唯一方式,这在一定程度上限制了这种方案的使用。“服务数据流”在“页面流”的基础上进一步解决了后者的老大难问题,也是Ajax推送功能的核心技术,后面将详细描述。第二,APE(Ajax推送引擎)将APE描述为一个功能全面的开源Ajax推送解决方案。APE包括一个Comet服务器(支持主流的Linux平台)和一个JavaScript客户端框架,用于在浏览器上实现任何实时数据传输应用程序要求,而无需安装任何客户端软件。服务器是一个用C语言开发的阿帕奇模块。APE允许用户在没有小程序和插件的情况下通过网络浏览器处理实时数据流。APE服务器只负责Ajax推送,而标准的网络服务器负责一般的HTTP请求,如发布和获取。本项目分为两部分,APE服务器和APE JavaScript框架。如图1所示,APE项目的核心技术是基于“服务数据流”的Ajax推送功能。第三,Ajax推送核心技术和实践由于web的无状态和无连接特性,如果我们想在Web上实现推送方法,那么我们的首要任务就是与服务器建立通信连接。然而,我们的要求不是安装任何插件,我们应该首先考虑Xml Http Request对象。让我们来谈谈前面的“服务数据流”。“服务数据流”的核心技术是XML Http请求调用。由于通信连接不能阻塞浏览器的主体,我们不能使用同步请求方法,所以我们必须使用异步通信方法,并且由Xml Http Request提供的异步请求方法对请求响应没有特殊的限制,这正好满足了与服务器建立长期连接的要求。XML Http请求 下面是对“服务数据流”机制:的介绍。服务器仍然使用循环监控来维护链接,并定期输出新数据。XML Http请求对象的响应文本属性包含来自服务器的数据;由于响应文本包含来自服务器的所有新数据,因此有必要引入一个分隔符,如“ end ”,以每次获取响应文本的最后一段。xmlhttp请求的浏览器端检测代码如下: function periodicxhreqcheck(){ varfull response=trim(xh req . response ext);var responsePattern=/^(.* end )*(。*)end。* $/;if(Full Response . match(ResponsePattern)){ var MostPresentdata=UllResponse . replace(ResponsePattern,“$ 2”);$(“LastEstNews”)。innerHTML=mostRecentData}}通过这种方式,客户端的定期XHReq检查功能可以获取响应文本中的最新内容。这种数据流方法比页面流更灵活。由于引入了XML Http请求对象,客户端能够控制与服务器链接的生命周期。四是要解决的问题采用了Ajax推送技术,这可以使我们的Web应用程序具有前所未有的功能和使用体验。当然,在实际应用中仍有许多困难的问题需要解决,如:(1)关于用户段异常,如何在连接失败时节省自动重新连接的资源,以及如何检测到连接已经断开;(2)服务器需要定期验证列表中的套接字,以确保列表中的连接可用;(3)大量的消息应该不断地通知给客户,例如消息考虑队列的处理。参考文献[1] enginbozdag,ali mesbah,arievan deursen .2007.[2]陈军,李瑞明,胡海涛.《克服分布式测试体系结构中的可观测性问题》,[,过程学报,2006,98(5)。3]刘,黄,张。在大规模传感器网络中平衡发现的推和拉,[J]。嵌入式网络系统会议,2004。[4]蒋易、王肇庆、曹礼。基于HTTP的实时信息传输方法[。计算机工程与设计,2008,29(10)。[5]万长林,严志辉,李小飞。基于HTTP推送技术的网络聊天系统研究[[]。南昌大学学报工程版,2005,27(1)。