賴建智
(福建省國土測繪院,福建 廈門 361000)
?
WebSocket在實時WebGIS中的應(yīng)用
賴建智*
(福建省國土測繪院,福建 廈門361000)
摘要:針對實時WebGIS應(yīng)用對數(shù)據(jù)時效性要求高的特點,介紹了WebSocket的原理、特點及其相對傳統(tǒng)方法的優(yōu)勢,并將WebSocket技術(shù)引入到實時WebGIS系統(tǒng)中,設(shè)計了一種基于WebSocket的實時WebGIS體系架構(gòu),在保證常規(guī)查詢分析業(yè)務(wù)需求的同時又可以較好地滿足實時WebGIS的時效性要求,提高了實時WebGIS系統(tǒng)的性能,為該類應(yīng)用提供了有效的解決方案。
關(guān)鍵詞:WebSocket;WebGIS;實時;服務(wù)器推送
1引言
Google Map在WebGIS發(fā)展史上具有劃時代的意義,借助Ajax技術(shù),用戶可以直接在網(wǎng)頁上加載地圖而不必安裝額外的軟件或插件,Web客戶端可以動態(tài)地從服務(wù)器獲取數(shù)據(jù)并在地圖上進行疊加和分析,而且整個交互過程不必刷新頁面,使得Web體驗有如桌面應(yīng)用搬的流暢[1],在線電子地圖及其相關(guān)的應(yīng)用也得到了快速的發(fā)展,WebGIS逐漸成為真正大眾化的應(yīng)用[2]。
傳統(tǒng)的WebGIS架構(gòu)基于客戶端請求—服務(wù)器端響應(yīng)的工作模式,服務(wù)器只能被動的響應(yīng)客戶端的請求而無法主動向客戶端推送消息。隨著GIS應(yīng)用的不斷擴展和深化,這種模式已經(jīng)越來越不能滿足各種實時WebGIS應(yīng)用系統(tǒng)的需求,期間出現(xiàn)的輪詢[3]、comet[4]等方案也只能從一定程度上改善客戶端和服務(wù)器的交互方式,仍然存在明顯的缺陷。WebSocket的出現(xiàn)實現(xiàn)了客戶端和服務(wù)器的全雙工通信,使得真正意義上的實時WebGIS成為可能。
2傳統(tǒng)WebGIS應(yīng)用的構(gòu)成與特點
傳統(tǒng)WebGIS系統(tǒng)的信息交互基于HTTP協(xié)議“請求—響應(yīng)”的消息循環(huán),即客戶端是服務(wù)的需求方,不斷向服務(wù)器發(fā)送服務(wù)請求,而服務(wù)器是數(shù)據(jù)和服務(wù)的提供者,始終以被動響應(yīng)的方式向客戶端提供信息,只有在客戶端提出服務(wù)請求時服務(wù)器才做出響應(yīng)并反饋給客戶端。利用Ajax技術(shù),客戶端可以實現(xiàn)異步數(shù)據(jù)獲取,對于耗時的請求,在數(shù)據(jù)返回之前頁面不會阻塞,用戶可以進行其他的操作。這種形式的信息交互廣泛存在于Web查詢分析應(yīng)用系統(tǒng)中,基本能滿足常規(guī)的應(yīng)用需求,如圖1所示。
3實時WebGIS應(yīng)用的特點及傳統(tǒng)解決方案
實時WebGIS應(yīng)用是一類對實時性要求較高的WebGIS應(yīng)用系統(tǒng),如各種實時信息發(fā)布WebGIS系統(tǒng)、預(yù)警監(jiān)控WebGIS系統(tǒng)等。與查詢分析式WebGIS系統(tǒng)相比,該類應(yīng)用最顯著的特點是數(shù)據(jù)時效性要求苛刻,服務(wù)器不能作為單純的被動響應(yīng)方,而需要能夠主動將數(shù)據(jù)發(fā)送給客戶端以保證信息的即時性。由于傳統(tǒng)的WebGIS是在HTTP協(xié)議基礎(chǔ)上構(gòu)建的基于“請求—響應(yīng)”的模型,服務(wù)器不支持主動響應(yīng),因此在實時WebGIS應(yīng)用的場合顯得力不從心。
在WebSocket出現(xiàn)之前針對實時WebGIS應(yīng)用需求典型的解決方案如基于輪詢的方法和基于客戶端插件的方法等,這些方法可以從一定程度上滿足實時性的要求,但仍然存在一些明顯的缺陷:輪詢的方法依然是基于HTTP的“請求—響應(yīng)”,它通過客戶端不斷地向服務(wù)器發(fā)送請求來達到信息同步的目的,這種方案無法保證每次請求的數(shù)據(jù)都是最新的,且頻繁的數(shù)據(jù)請求將對系統(tǒng)的性能產(chǎn)生不利的影響;基于插件的方案可以模擬服務(wù)器和客戶端之間的雙向通信,但是額外的插件安裝帶來的資源占用、插件升級、安全漏洞以及瀏覽器的支持性等問題使其無法得到廣泛的應(yīng)用。
4WebSocket的原理與特點
WebSocket是基于TCP連接的通訊協(xié)議,它實現(xiàn)了客戶端瀏覽器和服務(wù)器之間的全雙工通信,從根本上改變了客戶端瀏覽器和服務(wù)器的交互方式。WebSocket的基本原理是,客戶端瀏覽器首先向服務(wù)器發(fā)出一個包含申請通訊協(xié)議升級的HTTP請求,服務(wù)器收到并解析這個特殊的HTTP請求然后將其與客戶端之間的HTTP協(xié)議升級至WebSocket協(xié)議并作出響應(yīng),通過這個過程,客戶端和服務(wù)器之間完成“握手”,二者建立起WebSocket連接。由于WebSocket連接本質(zhì)上是基于TCP的連接,具備TCP連接全雙工及高可靠性的特點,這個連接一旦建立會持續(xù)保持,直至客戶端瀏覽器或者服務(wù)器中任何一方主動斷開該,且通訊雙方在連接建立以后都可以向?qū)Ψ街鲃拥匕l(fā)送消息,為客戶端和服務(wù)器之間的信息同步提供了可靠保證,如圖2所示。
WebSocket通信協(xié)議于2011年被IETF認(rèn)定為RFC 6455標(biāo)準(zhǔn),WebSocket API也被W3C定為Web的標(biāo)準(zhǔn),WebSocket逐漸得到了各大主流瀏覽器的支持,這些使得WebSocket的推廣應(yīng)用成為可能。
5WebSocket在實時WebGIS中的應(yīng)用
WebSocket彌補了常規(guī)HTTP協(xié)議只能進行單向信息傳遞的不足,使得客戶端瀏覽器與服務(wù)器之間的關(guān)系變得“對等”,服務(wù)器也可以主動地向客戶端推送信息。因此,將WebSocket引入到實時WebGIS系統(tǒng)中,可以很好地滿足此類應(yīng)用對于信息即時性的苛刻要求。
如圖3所示為一個實時監(jiān)控WebGIS系統(tǒng)的體系結(jié)構(gòu)示意圖,該系統(tǒng)由傳感器、客戶端和服務(wù)器端三個邏輯層構(gòu)成,不同層之間以及同層內(nèi)部通過Internet進行互連。各邏輯層的分工如下:
客戶端是系統(tǒng)與用戶交互的窗口,用戶通過客戶端瀏覽地理信息以及通過客戶端向服務(wù)器發(fā)送數(shù)據(jù)請求;來自服務(wù)器的信息通過客戶端以圖形、表格等有效的形式展示給用戶。客戶端的數(shù)量任意多個,可能是PC上的瀏覽器,也可能是移動設(shè)備上的瀏覽器。
服務(wù)器端負(fù)責(zé)數(shù)據(jù)存儲、數(shù)據(jù)推送及業(yè)務(wù)邏輯處理,其中,GIS數(shù)據(jù)庫是數(shù)據(jù)存儲的場所,空間數(shù)據(jù)和屬性數(shù)據(jù)存儲其中,為整個WebGIS系統(tǒng)提供基礎(chǔ)支持。
圖3基于WebSocket的實時WebGIS系統(tǒng)體系結(jié)構(gòu)
業(yè)務(wù)邏輯服務(wù)器針對非實時性的查詢分析需求,負(fù)責(zé)處理來自客戶端的請求,并將處理結(jié)果返回客戶端。業(yè)務(wù)邏輯服務(wù)器是一個抽象層,由Web服務(wù)器和GIS應(yīng)用服務(wù)器組成,其中,Web服務(wù)器是基礎(chǔ)層,所有請求的獲取和應(yīng)答的轉(zhuǎn)發(fā)都經(jīng)由Web服務(wù)器傳輸。一般的非空間業(yè)務(wù)請求由Web服務(wù)器直接處理并做出響應(yīng);對于空間數(shù)據(jù)相關(guān)的業(yè)務(wù)請求,Web服務(wù)器做預(yù)處理后轉(zhuǎn)發(fā)給GIS服務(wù)器進行相關(guān)的空間分析處理,再經(jīng)由Web服務(wù)器返回給客戶端。所有“請求—響應(yīng)”過程基于Ajax的異步處理,可以保證即使在耗時的請求中客戶端也不會因為等待服務(wù)器的響應(yīng)而阻塞界面。
由于WebSocket本質(zhì)上是基于TCP/IP的全雙工通訊協(xié)議,其數(shù)據(jù)傳輸不依賴于Web服務(wù)器的轉(zhuǎn)接,同時考慮到與業(yè)務(wù)邏輯的相對獨立性,將實時監(jiān)控與推送處理部分分離出來,由WebSocket服務(wù)器獨立承擔(dān),專門負(fù)責(zé)實時監(jiān)控數(shù)據(jù)的監(jiān)聽和推送??蛻舳嗽诘卿浐笈cWebSocket服務(wù)器建立起持久連接,WebSocket服務(wù)器通過與傳感器相連搜集監(jiān)測數(shù)據(jù),對于實時性要求較高的監(jiān)測數(shù)據(jù),WebSocket可以在第一時間往客戶端推送,確保了客戶端客戶端中信息的時效性。
6結(jié)論
實時WebGIS是GIS的一個重要應(yīng)用場合,與常規(guī)WebGIS應(yīng)用系統(tǒng)相比其對數(shù)據(jù)的時效性提出了較高的要求,傳統(tǒng)基于HTTP的“請求—響應(yīng)”的方法難以滿足該類應(yīng)用的需求。WebSocket的出現(xiàn)從本質(zhì)上改變了Web系統(tǒng)中客戶端瀏覽器與服務(wù)器的交互方式,使得服務(wù)器可以主動地向客戶端瀏覽器推送數(shù)據(jù)。WebSocket為實時WebGIS應(yīng)用提供了一種有效的實現(xiàn)方式,可以及大地提高實時WebGIS系統(tǒng)的性能,滿足不同的應(yīng)用需求。
參考文獻
[1]欒紹鵬,朱長青. 基于Ajax的WebGIS開發(fā)新模式[J]. 測繪工程,2006,15(6):30~33.
[2]彭璇,吳肖. Google Map API在網(wǎng)絡(luò)地圖服務(wù)中的應(yīng)用[J]. 測繪信息與工程,2010,35(1):25~27.
[3]唐昭琳,顧林. 基于Ajax長輪詢技術(shù)的在線答疑系統(tǒng)設(shè)計[J]. 廣西科學(xué)院學(xué)報,2013,29(1):40~42.
[4]戚永軍,翟智平,耿娟平. 基于Comet的Web即時通訊系統(tǒng)設(shè)計與實現(xiàn)[J]. 計算機科學(xué),2012,39(S2):77~79.
[5]繆謹(jǐn)勵,陶留鋒,邢廷炎等. 基于Pushlet的實時WebGIS研究與實現(xiàn)[J]. 地理信息世界,2013(5):64~68.
[6]王會蒙,孫勇,季民等. 基于WebGIS和Flex的青島市海洋氣象服務(wù)平臺的研發(fā)[J]. 地理信息世界,2015(3):52~56.
[7]李強,李冠楠,羅勇勝等. 基于物聯(lián)網(wǎng)的實時Web系統(tǒng)設(shè)計與實現(xiàn)[J]. 電腦與信息技術(shù),2011,19(4):44~47.
[8]李錫輝,楊麗. 基于WebSocket的服務(wù)器推送技術(shù)研究[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(6):45~46.
[9]呂海東. 基于WebSocket的實時Web監(jiān)控系統(tǒng)[J]. 工業(yè)控制計算機,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
文獻標(biāo)識碼:B
*收稿日期:2016—02—19
作者簡介:賴建智(1989—),男,助理工程師,主要從事空間數(shù)據(jù)處理、數(shù)據(jù)庫建庫及GIS應(yīng)用研究。