1 引言
基于 web 的网络管理是web 功能和网管技术的结合。对用户来说,因为只要能上网就可以通过浏览器接入网络管理软件,同时网页的界面组件和网页的基本操作都为用户所熟悉所以深受用户欢迎。对开发和部署人员来说因为只需要维护部署服务器端,这样就可以集中开发维护和升级。所以基于web 的网络管理成为一大发展趋势。但是由于web 网络管理系统中,浏览器客户端与服务器之间的采用http 协议这样同步的请求/应答通信方式,一次请求应答之后浏览器与服务之间就失去的连接,浏览器只能取得请求时刻服务器的数据状态,不能满足实时告警、实时性能数据监控这样的需求。
针对这个问题最简单的解决方式就是设置页面的refresh 属性,设定刷性周期之后自动的由浏览器自定重新请求整个页面,这种方式虽然每次都重新请求整个页面而大部分情况实时更改了很小的一个界面元素,效率低下。而且真实的网络情况不确定,这个刷新周期也不好确定,设置的太短浪费带宽,设置的太长又缺乏实时性。在网页中嵌入applet 方式[1]中applet不能与网页中其他的元素有效的互动同时需要在客户机中安装JAVA 运行环境,Flex[2]方式具有丰富的界面元素但是需要在浏览器安装插件,有可能存在安全隐患。而且上述两种方式都采用了http 以外的协议收到防火墙的限制。
本文采用 AJAX 与Servlet 设计的push 模式,运用浏览器内置支持的异步请求对象和脚本处理引擎来处理与服务器的通信,不需要安装任何插件,采用纯http 协议能顺利穿越防火墙。只在服务采集到数据时才向浏览器发送数据,并且只针对需要更新的网页组件发送少量的数据具有很高的效率。
2 Web push 技术介绍
Web Push 技术又称comet 技术是为了解决浏览器与服务器的一次请求应答结束后,浏览器与服务器失去了的联系不能保持连接的问题而发展起来的一种技术。是对浏览器端JavaScript、文档模型DOM、CSS、内置异步请求对象XmlHttpRequest 对象或者隐藏帧IFrame的综合应用,并且需要相应的服务器技术的配合。因为服务器只需要把用户感兴趣的事件发送到浏览器端,所以采用的是订阅/发布的通信方式。采用这种技术之后在浏览器与服务器之间建立了一条数据传输通道,服务器可以及时的将信息推送到浏览器端,并通过JavaScript函数操作浏览器文档模型,更改文档CSS 显示属性动态更改界面,及时反映服务器数据的变化。
2.1 两种push 机制
Push 机制有两种具体的实现方式,一种是基于AJAX 的长轮询,一种是基于IFrame 的长连接[3].
2.1.1 基于AJAX 的长轮询
AJAX 即"Asynchronous JavaScript and XML"(异步JavaScript 和XML)是指一种创建交互式网页应用的技术。基于AJAX 的push 本质上是通过XMLHttpRequest 对象将信息从服务器端拉回来因为不需要人的参与所以表现为服务器主动推送的效果。
XMLHttpRequest 发出异步请求后,服务器会阻塞请求直到有数据传递或超时才返回。
客户端 JavaScript 响应处理函数处理信息更改显示界面,再次发出请求形成一个数据循环来建立通道。
2.1.2 基于IFrame 的长连接
IFrame 是很早就存在的一种 HTML 标记, 通过在 HTML 页面里嵌入一个隐