




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
精品文檔-下載后可編輯WebSocket技術(shù)在實時WEB通訊中的應(yīng)用研究-設(shè)計應(yīng)用摘要:本文在比較傳統(tǒng)的實時web通訊技術(shù)與研究HTML5WebSocket技術(shù)基礎(chǔ)上,通過研究WebSocket技術(shù)在實時WEB通訊中的應(yīng)用,體現(xiàn)出WebSocket在B/S模式中的應(yīng)用優(yōu)勢與價值。
1.前言
作為下一代的Web標(biāo)準(zhǔn),HTML5擁有許多引人注目的新特性,如Canvas、本地存儲、多媒體編程接口、WebSocket等,有兩大特點:首先,強化Web網(wǎng)頁的表現(xiàn)性能。其次,追加本地數(shù)據(jù)庫等Web應(yīng)用的功能。包括HTML、CSS和JavaScript在內(nèi)的一套技術(shù)組合,減少瀏覽器對于需要插件的豐富性網(wǎng)絡(luò)應(yīng)用服務(wù)(plug-inbasedrichinternetapplication,RIA),如AdobeFlash、MicrosoftSilverlight與OracleJavaFX的需求,并且提供更多能有效增強網(wǎng)絡(luò)應(yīng)用的標(biāo)準(zhǔn)集。而有“Web的TCP”支撐的WebSocket在打破了現(xiàn)有的WEB網(wǎng)絡(luò)通訊編程模式,WebSocket使得瀏覽器提供對Socket的支持成為可能,在瀏覽器和服務(wù)器之間提供了一個基于TCP連接的雙向通道,使得開發(fā)人員可以方便構(gòu)建實時Web應(yīng)用。
2.傳統(tǒng)實時WEB的通訊技術(shù)
傳統(tǒng)的Web應(yīng)用的信息交互過程是客戶端通過瀏覽器發(fā)出一個請求(Request),服務(wù)器端接收和審核完請求后進(jìn)行處理(Response)并返回結(jié)果給客戶端,然后客戶端瀏覽器將信息呈現(xiàn)出來,這種機制對于信息變化不是特別頻繁的應(yīng)用尚能相安無事,但對于那些實時要求比較高的應(yīng)用來說,當(dāng)客戶端瀏覽器準(zhǔn)備呈現(xiàn)服務(wù)器返回的數(shù)據(jù)信息時,信息有可能已經(jīng)過時了。保持客戶端和服務(wù)器端的信息同步是實時Web應(yīng)用的關(guān)鍵要素。在WebSocket規(guī)范出來之前,開發(fā)人員想實現(xiàn)實時Web應(yīng)用,只能采用如輪詢(Polling)或Comet技術(shù)方案,而Comet則是輪詢技術(shù)的改進(jìn),長輪詢機制與流技術(shù)。
輪詢:客戶端以一定的時間間隔向服務(wù)端發(fā)出請求,以頻繁請求的方式來保持客戶端和服務(wù)器端的同步。問題在于:當(dāng)客戶端以固定頻率向服務(wù)器發(fā)起請求的時候,服務(wù)器端的數(shù)據(jù)可能并沒有更新,造成無謂的網(wǎng)絡(luò)傳輸,屬于低效的實時方案。
長輪詢:長輪詢是對定時輪詢的改進(jìn)和提高,目地是降低無效的網(wǎng)絡(luò)傳輸。當(dāng)服務(wù)器端沒有數(shù)據(jù)更新時,連接會保持一段時間周期直到數(shù)據(jù)或狀態(tài)改變或者時間過期,通過這種機制來減少無效的客戶端和服務(wù)器間的交互。當(dāng)服務(wù)端數(shù)據(jù)變更非常頻繁時,就和定時輪詢沒有本質(zhì)上性能提高。
流:通常在客戶端的頁面使用一個隱藏的窗口向服務(wù)端發(fā)出一個長連接的請求。服務(wù)器端接到這個請求后作出回應(yīng)并不斷更新連接狀態(tài)以保證客戶端和服務(wù)器端的連接不過期。
將服務(wù)器端的信息不斷推向客戶端。但需要針對不同的瀏覽器設(shè)計不同的方案來改進(jìn)用戶體驗,同時在并發(fā)比較大的情況下,對服務(wù)器端的資源是一個極大的考驗。
以上方案只是利用Ajax方式來模擬實時的效果,每次交互都是HTTP的請求和應(yīng)答的過程,每次都帶有一套完整的HTTP頭信息,增加了傳輸?shù)臄?shù)據(jù)量,在實際的應(yīng)用中,為了模擬真實的實時效果,需要構(gòu)造兩個HTTP連接來模擬客戶端和服務(wù)器之間的雙向通訊,一個連接用來處理客戶端到服務(wù)器端的數(shù)據(jù)傳輸,一個連接用來處理服務(wù)器端到客戶端的數(shù)據(jù)傳輸,增加編程實現(xiàn)的復(fù)雜度,同時增加了服務(wù)器端的負(fù)載,制約了應(yīng)用系統(tǒng)的擴展性。
3.HTML5WebSocket概念及規(guī)范
WebSocketAPI是下一代客戶端-服務(wù)器的異步通信方法。取代了單個的TCP套接字,使用ws或wss協(xié)議,在任意的客戶端和服務(wù)器程序通訊。WebSocket目前由W3C進(jìn)行標(biāo)準(zhǔn)化,已經(jīng)受到Firefox4、Chrome4、Opera10.70以及Safari5等瀏覽器的支持,在給定的時間范圍內(nèi)的任意時刻,相互推送信息。
HTML5WebSockets從一個Web客戶端連接到一個遠(yuǎn)程端點,需要創(chuàng)建WebSocket實例并為之提供一個URL來表示想要連接到的遠(yuǎn)程端點。該規(guī)范定義了ws://以及wss://模式來分別表示W(wǎng)ebSocket和安全WebSocket連接。一個WebSocket連接是在客戶端與服務(wù)器之間HTTP協(xié)議的初始握手階段將其升級到WebSocket協(xié)議來建立的,其底層仍是TCP/IP連接。
其中:
WS:表示HTML5WEBSockets協(xié)議;
Host:表示服務(wù)器的地址;
Port:表示待鏈接的端口;
WebSocketServer:表示Server請求資源地址。
WebSockets使用HTTPUpgrade機制升級到WebSocket協(xié)議,同時兼容HTTP的握手機制,因此HTTP服務(wù)器可以與WebSocket服務(wù)器共享默認(rèn)的HTTP與HTTPS端(80和443)。要建立一個WebSocket連接,客戶端和服務(wù)器在初次握手的時候從HTTP協(xié)議提升到WebSocket協(xié)議??蛻舳藶g覽器首先要向服務(wù)器發(fā)起一個HTTP請求,這個請求和通常的HTTP請求不同,包含了一些附加頭信息,其中附加頭信息“Upgrade:WebSocket”,表明是一個申請協(xié)議升級的HTTP請求,服務(wù)器端解析附加的頭信息,產(chǎn)生應(yīng)答信息返回給客戶端,由此客戶端和服務(wù)器端的WebSocket建立成功,然后通過鏈接通道自由傳遞信息,并且持續(xù)到客戶端或者服務(wù)器端的單方主動關(guān)閉連接。連接建立后,WebSocket數(shù)據(jù)幀以全雙工的模式在客戶端和服務(wù)器之間來回傳輸。
典型WebSocket請求與響應(yīng)例子如下:
其中Sec-WebSocket-Key1,Sec-WebSocket-Key2和[8-bytesecuritykey]這幾個頭信息是WebSocket服務(wù)器用來生成應(yīng)答信息的,服務(wù)器基于以下的算法來產(chǎn)生正確的應(yīng)答信息:
a)逐個字符讀取Sec-WebSocket-Key1頭信息中的值,將數(shù)值型字符連接到一起放到一個臨時字符串里,同時統(tǒng)計所有空格的數(shù)量;
b)將在第1步里生成的數(shù)字字符串轉(zhuǎn)換成一個整型數(shù)字,然后除以第1步里統(tǒng)計出來的空格數(shù)量,將得到的浮點數(shù)轉(zhuǎn)換成整數(shù)型;
c)將第2步里生成的整型值轉(zhuǎn)換為符合網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)字節(jié)數(shù)組;
d)對Sec-WebSocket-Key2頭信息同樣進(jìn)行第1到第3步的操作,得到另外一個網(wǎng)絡(luò)字節(jié)數(shù)組;
e)將[8-bytesecuritykey]和在第3,第4步里生成的網(wǎng)絡(luò)字節(jié)數(shù)組合并成一個16字節(jié)的數(shù)組;
f)對第5步生成的字節(jié)數(shù)組使用MD5算法生成一個哈希值,這個哈希值就作為安全密鑰返回給客戶端,以表明服務(wù)器端獲取了客戶端的請求,同意創(chuàng)建WebSocket連接。
服務(wù)端將生成的網(wǎng)絡(luò)字節(jié)數(shù)組和客戶端提交的頭信息里的[8-bytesecuritykey]
合并成一個16位字節(jié)數(shù)組并用MD5算法加密,然后將生成的安全密鑰作為應(yīng)答信息返回給客戶端,由此建立雙方的WebSocekt連接通道,實現(xiàn)WebSocket握手信息的處理邏輯。WbSocket服務(wù)器由兩個類構(gòu)成,一個是WebSocketServer,另外一個是SocketConnection.
實際的開發(fā)過程中,為構(gòu)建Web應(yīng)用,首先需要構(gòu)建WebSocket規(guī)范的服務(wù)器,服務(wù)器端的實現(xiàn)不受平臺和開發(fā)語言的限制,只需要遵從WebSocket規(guī)范即可。
如果使用的是一個未加密的WebSocket連接(ws://),在透明的代理服務(wù)器情況下,瀏覽器是不知道代理服務(wù)器的,所以不會發(fā)送HTTPCONNECT方法。如使用的是加密的WebSocket安全連接(wss://),那么在透明代理服務(wù)器下,瀏覽器不知道代理服務(wù)器,所以不會發(fā)出HTTPCONNECT方法。然而,因為線上信息是加密的,中間透明代理服務(wù)器會簡單的讓加密信息通過,因此就增加了使用加密的WebSocket連接的成功率。
HTML5WebSocket目的是取代輪詢和Comet技術(shù),使客戶端瀏覽器具備像C/S架構(gòu)下桌面系統(tǒng)的實時通訊能力。瀏覽器通過JavaScript向服務(wù)器發(fā)出建立WebSocket連接的請求,連接建立以后,客戶端和服務(wù)器端就可以通過TCP連接直接交換數(shù)據(jù)。因為WebSocket連接本質(zhì)上就是一個TCP連接,所以在數(shù)據(jù)傳輸?shù)姆€(wěn)定性和數(shù)據(jù)傳輸量的大小方面,和輪詢以及Comet技術(shù)比較,具有很大的性能優(yōu)勢。
4.WebSocketJavaScript接口定義
針對WebSocketJavaScript客戶端接口定義相對比較簡單:
其中URL屬性代表WebSocket服務(wù)器的網(wǎng)絡(luò)地址,協(xié)議通常是“ws”,send方法就是發(fā)送數(shù)據(jù)到服務(wù)器端,close方法就是關(guān)閉連接。除了這些方法,還有一些很重要的事件:
onOpen,onMessage,onError以及onClose.
5.WebSocket應(yīng)用場景
5.1初始數(shù)據(jù)前臺展示
初始數(shù)據(jù)通過后臺的數(shù)據(jù)推送方法到客戶端,客戶端可以在回調(diào)函數(shù)中收到信息,通過HTML5組件來展示這些信息。
5.2后臺推送信息,前臺實時更新
增加后臺推送信息代碼,在后臺起一個定時器,定時推送產(chǎn)生消息或者清除信息,并將信息推送給所有的客戶端。
5.3客戶端拖拽節(jié)點,同步到其他客戶端
增加拖拽同步,監(jiān)聽網(wǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 薪酬代發(fā)與員工薪酬結(jié)構(gòu)優(yōu)化服務(wù)協(xié)議
- 電子商務(wù)債務(wù)解決與風(fēng)險控制合同
- 軟件研發(fā)成果保密補充協(xié)議
- 供應(yīng)鏈供應(yīng)鏈金融創(chuàng)新合作協(xié)議
- 公司員工消防培訓(xùn)體系
- 感冒的護理課件
- 校園踩踏安全教育
- 作業(yè)治療計劃
- 護理入職簡歷
- 大咯血的護理
- 《民航客艙設(shè)備操作與管理》課件-項目三 客艙應(yīng)急設(shè)備
- 2022自行車專用道設(shè)計標(biāo)準(zhǔn)
- 石油工程概論智慧樹知到期末考試答案2024年
- (高清版)TDT 1056-2019 縣級國土資源調(diào)查生產(chǎn)成本定額
- 2022版《企業(yè)安全生產(chǎn)費用提取和使用管理》培訓(xùn)課件
- 協(xié)同治理:理論研究框架與分析模型
- 優(yōu)甲樂服用方法
- 2024年水發(fā)集團有限公司招聘筆試參考題庫附帶答案詳解
- 小學(xué)低年級數(shù)學(xué)游戲教學(xué)現(xiàn)狀及對策研究
- 社區(qū)團購電商模式解讀分析模板
- 爆破作業(yè)的安全規(guī)定與操作程序
評論
0/150
提交評論