基于HTML5的实时Web数据监测系统的设计与研究论文

时间:2021-08-31

基于HTML5的实时Web数据监测系统的设计与研究论文

  随着人们对信息实时性需求的不断提高,实时Web技术越来越受到人们的重视。例如,实时在线版网络游戏、在线购票系统等都是实时Web的典型代表。有国外媒体称“实时Web的时代即将到来,实时Web不仅仅是一种时尚也是一种技术趋势”。客户端数据的实时性要求服务器能主动向客户端实时发送数据,将最新的消息通知用户。传统的Web应用中,服务器都是响应浏览器请求发送数据给客户端,而客户端并不知道服务器数据何时变化,因此,无法做到真正的实时性。随着HTML5技术的发展,通过HTML5的WebSocket技术和Canvas可实现真正实时Web的需求。为此,构建基于HTML5的实时Web数据监测系统,与传统实时Web技术相比,有效地减少了网络延时和吞吐量。

  1 传统实时Web技术

  传统实时Web技术是基于HTTP协议(超文本传输协议),HTTP协议下的服务器和客户端的信息交互方式为:客户端发送请求到服务器端,服务器端接收并处理客户端请求后返回结果给客户端,然后断开连接。由于HTTP协议是无状态协议,对于实时性要求比较高的Web应用,当客户端准备呈现服务器端的响应数据时数据可能已经过时,如果用户想要获得实时性信息需要不停地刷新页面,这显然是不明智的。目前,实时Web的实现形式主要是轮询和其他服务器推送,最常用的主要是轮询和长轮询技术。

  1)轮询技术。客户端以固定频率向服务器发送HTTP请求,通过服务器端响应请求实现实时性。显然,消息传递之间如果有准确的时间间隔,轮询是一个很好的方法,但是通常实时数据之间的时间间隔是不可预知的,实时数据何时发生改变无法预测,若频率过高会加重服务器负载和网络负担,频率过低会丢失重要数据,并且每次连接需要发送HTTP报头而产生网络噪声。因此,轮询技术是一种很低效的实时通信方案。

  2)长轮询技术。客户端向服务器发送请求后,在一段时间内服务器会保持打开状态,在此期间,如果服务器收到发送消息通知,会发送数据到客户端,客户端接收到数据时重新发送请求信息。然而,当数据量较大时,长轮询对于传统轮询方式并无性能改善。从以上分析可知,传统实时Web存在的缺陷是服务器端和客户端缺少全双工、稳定的长连接。

  2 相关技术与开发环境

  2.1 WebSocket技术HTML5为继HTML4.01后由W3C(万维网联盟)和WHATWG(Web超文本应用技术工作组)共同开发的一个全新版本的HTML。WebSocket作为HTML5的一种新的协议,它提供了一种全新的服务器-客户端的异步通信方法,弥补了传统实时Web的缺陷,成为未来实时Web应用的首选方案。

  WebSocket协议和WebSocket API分别为Web-Socket的理论和实践部分。WebSocket协议由握手和数据传输2个阶段构成。TCP建立连接后首先要进行WebSocket层的握手操作,这个阶段非常简单,客户端给服务器发送HTTP请求,服务器响应客户端请求。

  这个阶段的数据传输都基于文本,与现有的HTTP1.1相兼容。握手成功后进入数据传输阶段,这个阶段脱离了HTTP协议。WebSocket API由W3C制定,在WebSocket API中客户端和服务器端只需一个交互信息,客户端和服务器端就建立了一条全双工的信息传输通道,可直接相互传输数据,类似于TCP/IP。这种技术不仅为实时Web应用节省了大量的服务器带宽和资源,而且能满足实时性的需求。

  2.2 WebSocket服务器

  WebSocket协议基于B/S架构,因此要实现Web-Socket协议,必须要有WebSocket服务器。目前Web-Socket服务器的开源实现有很多,例如:

  1)Kaazing WebSocket Gateway(Java实现的Web-Socket服务器);

  2)Netty 3.0+(Java实现的WebSocket服务器);

  3)Node.js(JavaScript实现的WebSocket服务器);

  4)mod_pywebsocket(Python实现的WebSocket服务器);

  Node.js是由Ryan Dahl发起的开源项目,现由Joyent公司管理维护。Node.js是可以让JavaScript在服务器端运行的平台,它可以让JavaScript既可在浏览器端又可在服务器环境下运行。Node.js与其他服务器语言相比优势有以下几点:

  1)Node.js采用V8引擎,大大提升了JavaScript代码的运行速度。

  2)Node.js摒弃了传统平台采用多线程实现高并发的方法,采用了单线程、异步式I/O、事件驱动的方式,不仅摆脱了多线程所带来的困扰,也使性能得到了巨大的提升,提高了开发效率。

  3)Node.js充分考虑了数据的实时性,是一个为实时Web而诞生的平台。通过Node.js与WebSocket的合作,可开发实时性要求较高的Web应用。

  2.3 客户端图形实时呈现

  如今,实时Web应用的开发者越来越注重用户的体验度,将繁杂的数据进行可视化可向用户更加简单、直观地展示数据的变化,减少用户整理和思考的时间。目前,互联网上的数据可视化工具有很多,例如Spss、Matlab、Excel、Tableau Desktop、Echarts等。其中,Spss更加注重统计分析,但图表与其他软件的兼容性较差;Matlab需要很强的编程能力,更偏向于科学方面的可视化处理;Excel输出图表无交互性,不能进行动态数据的可视化处理;Tableau Desktop需要收取较高的费用。

  HTML5中的Canvas元素提供了可进行绘图的`平台,采用JavaScript语言对其操作可绘制理想的图形,通过Canvas元素可对系统的实时数据进行可视化处理。Echarts(Enterprise Charts商业产品图表库)是基于Canvas使用JavaScript语言编写的可视化图表库,而且拥有动态数据接口。通过Echarts的动态数据接口,可对系统的实时数据进行可视化处理。

  2.4 开发工具及开发环境

  Web程序主要是在浏览器上观看运行效果,在后端服务器和浏览器中完成调试和运行Web程序,选用Editplus作为编辑器,可在编码过程中对代码进行高亮显示,提高编程效率。目前浏览器对HTML5的支持程度良莠不齐,系统选用Google Chrome浏览器(版本35.0.1916.114m)作为开发和测试环境,与其他浏览器相比,Chrome打开速度快,用户体验好。服务器端安装Node.js(版本0.10.26)及Node.js的包管理器NPM(版本1.4.3)。在Windows系统中安装Node.js非常简单,访问http://nodejs.org下载安装包后点击Next就可以自动完成安装,通过这种方式还自动安装了Node.js的包管理器NPM。另外,在命令提示符中输入node,即可测试Node.js是否安装成功。