賴建智
(福建省國土測繪院,福建 廈門 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應用研究。