赖建智
(福建省国土测绘院,福建 厦门 361000)
WebSocket在实时WebGIS中的应用
赖建智*
(福建省国土测绘院,福建 厦门361000)
摘要:针对实时WebGIS应用对数据时效性要求高的特点,介绍了WebSocket的原理、特点及其相对传统方法的优势,并将WebSocket技术引入到实时WebGIS系统中,设计了一种基于WebSocket的实时WebGIS体系架构,在保证常规查询分析业务需求的同时又可以较好地满足实时WebGIS的时效性要求,提高了实时WebGIS系统的性能,为该类应用提供了有效的解决方案。
关键词:WebSocket;WebGIS;实时;服务器推送
1引言
Google Map在WebGIS发展史上具有划时代的意义,借助Ajax技术,用户可以直接在网页上加载地图而不必安装额外的软件或插件,Web客户端可以动态地从服务器获取数据并在地图上进行叠加和分析,而且整个交互过程不必刷新页面,使得Web体验有如桌面应用搬的流畅[1],在线电子地图及其相关的应用也得到了快速的发展,WebGIS逐渐成为真正大众化的应用[2]。
传统的WebGIS架构基于客户端请求—服务器端响应的工作模式,服务器只能被动的响应客户端的请求而无法主动向客户端推送消息。随着GIS应用的不断扩展和深化,这种模式已经越来越不能满足各种实时WebGIS应用系统的需求,期间出现的轮询[3]、comet[4]等方案也只能从一定程度上改善客户端和服务器的交互方式,仍然存在明显的缺陷。WebSocket的出现实现了客户端和服务器的全双工通信,使得真正意义上的实时WebGIS成为可能。
2传统WebGIS应用的构成与特点
传统WebGIS系统的信息交互基于HTTP协议“请求—响应”的消息循环,即客户端是服务的需求方,不断向服务器发送服务请求,而服务器是数据和服务的提供者,始终以被动响应的方式向客户端提供信息,只有在客户端提出服务请求时服务器才做出响应并反馈给客户端。利用Ajax技术,客户端可以实现异步数据获取,对于耗时的请求,在数据返回之前页面不会阻塞,用户可以进行其他的操作。这种形式的信息交互广泛存在于Web查询分析应用系统中,基本能满足常规的应用需求,如图1所示。
3实时WebGIS应用的特点及传统解决方案
实时WebGIS应用是一类对实时性要求较高的WebGIS应用系统,如各种实时信息发布WebGIS系统、预警监控WebGIS系统等。与查询分析式WebGIS系统相比,该类应用最显著的特点是数据时效性要求苛刻,服务器不能作为单纯的被动响应方,而需要能够主动将数据发送给客户端以保证信息的即时性。由于传统的WebGIS是在HTTP协议基础上构建的基于“请求—响应”的模型,服务器不支持主动响应,因此在实时WebGIS应用的场合显得力不从心。
在WebSocket出现之前针对实时WebGIS应用需求典型的解决方案如基于轮询的方法和基于客户端插件的方法等,这些方法可以从一定程度上满足实时性的要求,但仍然存在一些明显的缺陷:轮询的方法依然是基于HTTP的“请求—响应”,它通过客户端不断地向服务器发送请求来达到信息同步的目的,这种方案无法保证每次请求的数据都是最新的,且频繁的数据请求将对系统的性能产生不利的影响;基于插件的方案可以模拟服务器和客户端之间的双向通信,但是额外的插件安装带来的资源占用、插件升级、安全漏洞以及浏览器的支持性等问题使其无法得到广泛的应用。
4WebSocket的原理与特点
WebSocket是基于TCP连接的通讯协议,它实现了客户端浏览器和服务器之间的全双工通信,从根本上改变了客户端浏览器和服务器的交互方式。WebSocket的基本原理是,客户端浏览器首先向服务器发出一个包含申请通讯协议升级的HTTP请求,服务器收到并解析这个特殊的HTTP请求然后将其与客户端之间的HTTP协议升级至WebSocket协议并作出响应,通过这个过程,客户端和服务器之间完成“握手”,二者建立起WebSocket连接。由于WebSocket连接本质上是基于TCP的连接,具备TCP连接全双工及高可靠性的特点,这个连接一旦建立会持续保持,直至客户端浏览器或者服务器中任何一方主动断开该,且通讯双方在连接建立以后都可以向对方主动地发送消息,为客户端和服务器之间的信息同步提供了可靠保证,如图2所示。
WebSocket通信协议于2011年被IETF认定为RFC 6455标准,WebSocket API也被W3C定为Web的标准,WebSocket逐渐得到了各大主流浏览器的支持,这些使得WebSocket的推广应用成为可能。
5WebSocket在实时WebGIS中的应用
WebSocket弥补了常规HTTP协议只能进行单向信息传递的不足,使得客户端浏览器与服务器之间的关系变得“对等”,服务器也可以主动地向客户端推送信息。因此,将WebSocket引入到实时WebGIS系统中,可以很好地满足此类应用对于信息即时性的苛刻要求。
如图3所示为一个实时监控WebGIS系统的体系结构示意图,该系统由传感器、客户端和服务器端三个逻辑层构成,不同层之间以及同层内部通过Internet进行互连。各逻辑层的分工如下:
客户端是系统与用户交互的窗口,用户通过客户端浏览地理信息以及通过客户端向服务器发送数据请求;来自服务器的信息通过客户端以图形、表格等有效的形式展示给用户。客户端的数量任意多个,可能是PC上的浏览器,也可能是移动设备上的浏览器。
服务器端负责数据存储、数据推送及业务逻辑处理,其中,GIS数据库是数据存储的场所,空间数据和属性数据存储其中,为整个WebGIS系统提供基础支持。
图3基于WebSocket的实时WebGIS系统体系结构
业务逻辑服务器针对非实时性的查询分析需求,负责处理来自客户端的请求,并将处理结果返回客户端。业务逻辑服务器是一个抽象层,由Web服务器和GIS应用服务器组成,其中,Web服务器是基础层,所有请求的获取和应答的转发都经由Web服务器传输。一般的非空间业务请求由Web服务器直接处理并做出响应;对于空间数据相关的业务请求,Web服务器做预处理后转发给GIS服务器进行相关的空间分析处理,再经由Web服务器返回给客户端。所有“请求—响应”过程基于Ajax的异步处理,可以保证即使在耗时的请求中客户端也不会因为等待服务器的响应而阻塞界面。
由于WebSocket本质上是基于TCP/IP的全双工通讯协议,其数据传输不依赖于Web服务器的转接,同时考虑到与业务逻辑的相对独立性,将实时监控与推送处理部分分离出来,由WebSocket服务器独立承担,专门负责实时监控数据的监听和推送。客户端在登录后与WebSocket服务器建立起持久连接,WebSocket服务器通过与传感器相连搜集监测数据,对于实时性要求较高的监测数据,WebSocket可以在第一时间往客户端推送,确保了客户端客户端中信息的时效性。
6结论
实时WebGIS是GIS的一个重要应用场合,与常规WebGIS应用系统相比其对数据的时效性提出了较高的要求,传统基于HTTP的“请求—响应”的方法难以满足该类应用的需求。WebSocket的出现从本质上改变了Web系统中客户端浏览器与服务器的交互方式,使得服务器可以主动地向客户端浏览器推送数据。WebSocket为实时WebGIS应用提供了一种有效的实现方式,可以及大地提高实时WebGIS系统的性能,满足不同的应用需求。
参考文献
[1]栾绍鹏,朱长青. 基于Ajax的WebGIS开发新模式[J]. 测绘工程,2006,15(6):30~33.
[2]彭璇,吴肖. Google Map API在网络地图服务中的应用[J]. 测绘信息与工程,2010,35(1):25~27.
[3]唐昭琳,顾林. 基于Ajax长轮询技术的在线答疑系统设计[J]. 广西科学院学报,2013,29(1):40~42.
[4]戚永军,翟智平,耿娟平. 基于Comet的Web即时通讯系统设计与实现[J]. 计算机科学,2012,39(S2):77~79.
[5]缪谨励,陶留锋,邢廷炎等. 基于Pushlet的实时WebGIS研究与实现[J]. 地理信息世界,2013(5):64~68.
[6]王会蒙,孙勇,季民等. 基于WebGIS和Flex的青岛市海洋气象服务平台的研发[J]. 地理信息世界,2015(3):52~56.
[7]李强,李冠楠,罗勇胜等. 基于物联网的实时Web系统设计与实现[J]. 电脑与信息技术,2011,19(4):44~47.
[8]李锡辉,杨丽. 基于WebSocket的服务器推送技术研究[J]. 网络安全技术与应用,2014(6):45~46.
[9]吕海东. 基于WebSocket的实时Web监控系统[J]. 工业控制计算机,2014(6):82~83.
Discussion on WebSocket’s Application in Real-Time WebGIS
Lai Jianzhi
(Fujian Province Land Institute of Surveying and Mapping,Xiamen 361000,China)
Key words:WebSocket; WebGIS; Real-Time; Server Push
Abstract:For the requirement for data instantaneity in real-time WebGIS application,this paper introduces the principle and character of WebSocket and its advantages against traditional methods,then introduces WebSoket into real-time WebGIS application and designs a WebSocket-based system architecture for real-time WebGIS which not only guarantees conventional query and analysis requirement but also fill the instantaneity requirement and promotes the system’s performance.This WebSocket-based system architecture also provides effective solution for other application of this type.
文章编号:1672-8262(2016)03-127-03
中图分类号:P209
文献标识码:B
*收稿日期:2016—02—19
作者简介:赖建智(1989—),男,助理工程师,主要从事空间数据处理、数据库建库及GIS应用研究。