999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

HTML5中的WebSocket 技術(shù)淺析

2016-05-14 21:02:54鄭志明林鵬濤
知音勵(lì)志·社科版 2016年6期

鄭志明 林鵬濤

摘 要 本文首先對(duì)WebSocket的定義及相關(guān)技術(shù)進(jìn)行了簡(jiǎn)要的說(shuō)明,并與傳統(tǒng)的HTTP協(xié)議進(jìn)行了簡(jiǎn)要對(duì)比,通過(guò)一個(gè)例子闡述了WebSocket技術(shù)的優(yōu)點(diǎn)以及它的主要應(yīng)用領(lǐng)域,最后簡(jiǎn)要的描述了WebSocket的使用方法。

【關(guān)鍵詞】WebSocket;HTTP;HTML5

隨著Web技術(shù)和移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,HTML5越來(lái)越被人們所關(guān)注并受到軟件開(kāi)發(fā)人員的喜愛(ài),可以這么說(shuō)HTML5是近十年來(lái)Web開(kāi)發(fā)標(biāo)準(zhǔn)過(guò)程中最巨大的飛躍。相對(duì)以往的版本,HTML5并非只是用來(lái)表示W(wǎng)eb文件中的內(nèi)容,它的最新使命是將Web帶入一個(gè)更加成熟的應(yīng)用平臺(tái)。作為下一代的Web標(biāo)準(zhǔn),HTML5擁有許多引人注目的新特性,如Canvas、本地存儲(chǔ)、多媒體編程接口、WebSocket 等等。這其中有“Web的TCP”之稱(chēng)的WebSocket 格外吸引Web開(kāi)發(fā)人員的注意。

1 WebSocket是什么?

WebSocket是HTML5規(guī)范中一種新的瀏覽器與服務(wù)器之間進(jìn)行通信的協(xié)議規(guī)范,它的主要功能是為了實(shí)現(xiàn)了瀏覽器與服務(wù)器之間的全雙工通信。通常基于B/S結(jié)構(gòu)的程序都是通過(guò)HTTP協(xié)議來(lái)進(jìn)行通信的,而HTTP協(xié)議僅能實(shí)現(xiàn)單向的通信,即請(qǐng)求只能從瀏覽器發(fā)出,服務(wù)器被動(dòng)的接收請(qǐng)求后進(jìn)行響應(yīng)。

1.1 WebSocket是一種協(xié)議

WebSocket 協(xié)議本質(zhì)上是一個(gè)基于TCP的協(xié)議。為了建立一個(gè) WebSocket 連接,瀏覽器首先要向服務(wù)器發(fā)起一個(gè)HTTP請(qǐng)求,這個(gè)請(qǐng)求和通常的HTTP請(qǐng)求有所不同,它還包含了一些附加的頭信息,其中附加頭信息“Upgrade: WebSocket”說(shuō)明這是一個(gè)協(xié)議升級(jí)的HTTP請(qǐng)求,服務(wù)器解析到這些附加的請(qǐng)求頭信息后產(chǎn)生響應(yīng)信息返回給客戶(hù)端,瀏覽器和服務(wù)器端的WebSocket連接就建立起來(lái)了,一旦這個(gè)連接建立,這個(gè)連接將會(huì)持續(xù)的存在直到瀏覽器或者服務(wù)器端的某一方主動(dòng)的關(guān)閉連接,雙方就可以通過(guò)這個(gè)連接通道自由的傳遞數(shù)據(jù)。

1.2 WebSocket協(xié)議與傳統(tǒng)的HTTP協(xié)議的區(qū)別與聯(lián)系

WebSocket協(xié)議與傳統(tǒng)的HTTP協(xié)議即有區(qū)別也有聯(lián)系,主要表現(xiàn)在以下向個(gè)方面:

(1)WebSocket是一種雙向通信協(xié)議,在建立連接后,WebSocket服務(wù)器和瀏覽器都能主動(dòng)的向?qū)Ψ桨l(fā)送或接收數(shù)據(jù);而HTTP協(xié)議只是一種單向的通信協(xié)議,建立連接后服務(wù)器不能主動(dòng)的向?yàn)g覽器發(fā)送數(shù)據(jù),它只有在接收到瀏覽器的請(qǐng)求后才能對(duì)瀏覽器發(fā)送數(shù)據(jù)。

(2)WebSocket通信首先需要通過(guò)握手連接,于TCP協(xié)議類(lèi)似,TCP連接首先也需要進(jìn)行客戶(hù)端和服務(wù)器端的握手連接,握手連接成功后才能進(jìn)行相互通信;而HTTP協(xié)議不需要進(jìn)行握手連接。

(3)WebSocket與HTTP協(xié)議都是基于TCP協(xié)議的,它們都屬于應(yīng)用層的協(xié)議,所以他們也都是可靠的協(xié)議。兩個(gè)協(xié)議還有密切的關(guān)聯(lián),當(dāng)WebSocket在建立握手連接時(shí),數(shù)據(jù)是通過(guò)HTTP協(xié)議傳輸?shù)模窃谖帐诌B接建立之后,真正的數(shù)據(jù)傳輸階段就不再需要HTTP協(xié)議的參與了。

2 為什么要使用WebSocket?

為了說(shuō)明WebSocket的優(yōu)勢(shì)是什么,也就是說(shuō)明我們?yōu)槭裁匆褂肳ebSocket,我們通過(guò)一個(gè)例子來(lái)解釋。在WebSocket未出現(xiàn)的時(shí)候,程序員如果想通過(guò)HTTP這種無(wú)狀態(tài)連接來(lái)實(shí)現(xiàn)即時(shí)通訊類(lèi)似的功能,通常有以下幾種方法:

2.1 Ajax輪詢(xún)

它的原理非常簡(jiǎn)單,就是通過(guò)Ajax定時(shí)向服務(wù)器發(fā)送請(qǐng)求,詢(xún)問(wèn)服務(wù)器是否有最新的消息,服務(wù)器如果有就發(fā)送最新的信息,如果沒(méi)有就什么事也不做。這種方式的缺點(diǎn)是會(huì)生成許多無(wú)用的請(qǐng)求,造成網(wǎng)絡(luò)無(wú)謂的數(shù)據(jù)傳輸,因此這是一種比較低效的方法。

2.2 長(zhǎng)輪詢(xún)

這是一種對(duì)Ajax輪詢(xún)改進(jìn)和提高的方法,主要是為了降低網(wǎng)絡(luò)上無(wú)謂傳輸。當(dāng)瀏覽器請(qǐng)求服務(wù)器時(shí),如果服務(wù)器端沒(méi)有數(shù)據(jù)更新的時(shí)候,連接會(huì)保持一段時(shí)間周期直到數(shù)據(jù)或狀態(tài)有所改變或者時(shí)間過(guò)期,通過(guò)這種機(jī)制來(lái)減少瀏覽器和服務(wù)器之間無(wú)謂的交互。如果服務(wù)端的數(shù)據(jù)更新很頻繁,相比Ajax輪詢(xún)這種方法也沒(méi)有本質(zhì)上的性能提高。

如何解決類(lèi)似即時(shí)通訊這種實(shí)時(shí)問(wèn)題了,如果還是通過(guò)HTTP這種無(wú)狀態(tài)的協(xié)議來(lái)解決這類(lèi)問(wèn)題,是沒(méi)有什么好的辦法的,于是人們迫切希望有一種能比HTTP無(wú)狀態(tài)協(xié)議更好的通信協(xié)議,這種通信協(xié)議可以實(shí)現(xiàn)瀏覽器和服務(wù)器雙向的通信,服務(wù)器不再是被動(dòng)的數(shù)據(jù)接收方,它也可以變?yōu)榱酥鲃?dòng)的數(shù)據(jù)發(fā)送方。在HTML5規(guī)范中,它們把這種通信協(xié)議稱(chēng)為:WebSocket。

3 WebSocket的主要應(yīng)用領(lǐng)域

根據(jù)之前我們的討論,我們可以得知WebSocket在應(yīng)用數(shù)據(jù)要進(jìn)行實(shí)時(shí)的更新時(shí)有先天的優(yōu)勢(shì),這是WebSocket產(chǎn)生的主要原因,也將是WebSocket的主要應(yīng)用方向。它的應(yīng)用領(lǐng)域非常多,比如:社交訂閱、多玩家游戲、多媒體即時(shí)通信、協(xié)同編輯/編程、股票基金報(bào)價(jià)、在線(xiàn)教育、體育實(shí)況更新等。

4 如何使用WebSocket?

使用WebSocket非常簡(jiǎn)單,它與使用HTTP協(xié)議與服務(wù)器建立請(qǐng)求連接還是有區(qū)別的。HTML5中規(guī)范中說(shuō)明WebSocket的連接建立在瀏覽器中可以通過(guò)Javascript提供的一組API來(lái)進(jìn)行。這組API的使用也非常簡(jiǎn)單,簡(jiǎn)單的使用如圖1所示。

而在服務(wù)器端中也有很多實(shí)現(xiàn)了WebSocket規(guī)范的技術(shù),以JAVAEE來(lái)說(shuō),從JAVAEE7.0開(kāi)始就已經(jīng)對(duì)WebSocket提供了支持,讀者只需根據(jù)其接口要求繼承相關(guān)類(lèi)并覆寫(xiě)相關(guān)方法就可以完成WebSocket服務(wù)器端的建立。

5 結(jié)語(yǔ)

本文通過(guò)什么是WebSocket?、為什么要使用WebSocket?、怎樣使用WebSocket?三個(gè)問(wèn)題的解答為讀者簡(jiǎn)要介紹了WebSocket的基本內(nèi)容。雖然WebSocket 的優(yōu)勢(shì)非常明顯,應(yīng)用領(lǐng)域非常多,但是我們也應(yīng)該看到它也有一定的局限性。

(1)當(dāng)前WebSocket 規(guī)范目前還處于草案階段,也就是它的規(guī)范和API還是有變動(dòng)的可能。

(2)當(dāng)前,和其他的主流瀏覽器相比,比如谷歌的Chrome、火狐的Firefox瀏覽器,作為占市場(chǎng)份額最大的微軟IE瀏覽器對(duì)HTML5的支持是相對(duì)比較差的,這也是我們?cè)跇?gòu)建Web應(yīng)用時(shí)候必須要考慮的一個(gè)問(wèn)題。

所以我們迫切希望WebSocket能盡快出臺(tái)正式的規(guī)范,也希望所有瀏覽器都能完全的支持HTML5的規(guī)范,這也是廣大程序員共同的愿望。相信這一天就會(huì)是不遠(yuǎn)的明天。

作者單位

贛南師范大學(xué)科技學(xué)院 江西省贛州市 34100

主站蜘蛛池模板: 操操操综合网| 亚洲中文在线视频| 欧美国产日本高清不卡| 日本中文字幕久久网站| 日韩麻豆小视频| 国产精品免费p区| 午夜国产在线观看| 亚洲天堂高清| 国产精品原创不卡在线| 亚洲中文字幕97久久精品少妇| 美女被操91视频| 97狠狠操| 亚洲国产高清精品线久久| 1024你懂的国产精品| 亚洲制服丝袜第一页| av在线手机播放| 国产欧美成人不卡视频| 国产麻豆精品久久一二三| 女人18一级毛片免费观看| 久久久精品久久久久三级| 欧洲亚洲欧美国产日本高清| 午夜福利视频一区| 青青草原国产精品啪啪视频| 成人无码一区二区三区视频在线观看| 日韩免费毛片视频| 国产精品福利在线观看无码卡| 国产又粗又猛又爽| 国产精品片在线观看手机版| 国产一级精品毛片基地| 国产自产视频一区二区三区| 青草视频久久| 久久精品人妻中文系列| 国产门事件在线| 女人18毛片久久| 免费女人18毛片a级毛片视频| 三上悠亚在线精品二区| 国产在线无码av完整版在线观看| 小13箩利洗澡无码视频免费网站| 尤物亚洲最大AV无码网站| 亚洲欧美精品日韩欧美| 欧美日韩在线第一页| 91欧美在线| 欧美成人精品在线| 久久99国产乱子伦精品免| aaa国产一级毛片| 欧类av怡春院| 免费人成网站在线观看欧美| 久久这里只精品热免费99| 中文字幕 欧美日韩| 中文无码影院| 日韩精品一区二区三区中文无码| 蜜臀av性久久久久蜜臀aⅴ麻豆| 中文字幕亚洲专区第19页| 国产美女一级毛片| 午夜无码一区二区三区| 欧洲亚洲一区| 日韩欧美成人高清在线观看| 丰满人妻被猛烈进入无码| 午夜国产不卡在线观看视频| 激情无码字幕综合| 欧美精品成人一区二区在线观看| 日本久久网站| 久久久久亚洲AV成人网站软件| 国产精品亚洲一区二区三区在线观看| 激情综合网址| 中文精品久久久久国产网址| 99中文字幕亚洲一区二区| 欧美丝袜高跟鞋一区二区| 四虎永久免费地址| 啊嗯不日本网站| 国产91视频观看| 亚洲美女一区| 久久精品国产91久久综合麻豆自制| 2021国产v亚洲v天堂无码| 97视频免费在线观看| www.国产福利| 男人天堂伊人网| 欧美性爱精品一区二区三区 | 国产高清免费午夜在线视频| 亚洲女人在线| 欧美a在线| 韩日免费小视频|