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

WebSocket:讓W(xué)eb更實(shí)時(shí)

2012-04-29 00:00:00
CHIP新電腦 2012年6期

聊天、讀新聞、查股票行情、玩游戲……我們總是希望在瀏覽器中可以直接運(yùn)行各種應(yīng)用程序、完成各種復(fù)雜的任務(wù),而不必添加額外的瀏覽器插件。這就需要Web應(yīng)用程序能夠?qū)崟r(shí)運(yùn)行,但傳統(tǒng)的互聯(lián)網(wǎng)協(xié)議架構(gòu)并不是為現(xiàn)在的富互聯(lián)網(wǎng)應(yīng)用(RIA)設(shè)計(jì)的,因此開發(fā)者需要使用老架構(gòu)實(shí)現(xiàn)新功能,這時(shí)難免會(huì)遇到許多問題。現(xiàn)代Web應(yīng)用需要革新傳統(tǒng)C/S(客戶端/服務(wù)器)模式通訊的協(xié)議架構(gòu)——從單向的HTTP問答模式升級(jí)到雙向的實(shí)時(shí)通訊模式。國(guó)際標(biāo)準(zhǔn)化組織W3C和IETF在2011年12月正式采納了WebSocket協(xié)議,從此Web應(yīng)用不再需要冗雜的HTTP替代方案,就可以在WebSocket協(xié)議下更快速、更簡(jiǎn)單地運(yùn)行。

HTTP是單行線

為了通過網(wǎng)絡(luò)發(fā)送或者下載數(shù)據(jù),客戶端需要與服務(wù)器之間建立TCP連接。TCP連接是為保證在終端之間完成無損數(shù)據(jù)傳輸而設(shè)計(jì)的,使用IP地址和網(wǎng)絡(luò)端口進(jìn)行配對(duì)。眾所周知,數(shù)據(jù)(信息)不僅需要被傳輸,還需要被理解,所以還必須用到一個(gè)運(yùn)行在TCP傳輸層之上的應(yīng)用層協(xié)議,從而實(shí)現(xiàn)客戶端和服務(wù)器之間的“通話”。在網(wǎng)站上,這個(gè)應(yīng)用層協(xié)議主要就是HTTP協(xié)議。盡管TCP支持通過虛擬的透明傳輸層實(shí)現(xiàn)雙向數(shù)據(jù)傳輸,但是應(yīng)用層的HTTP協(xié)議并不支持該選項(xiàng)。簡(jiǎn)單地說,雙向數(shù)據(jù)傳輸意味著允許從服務(wù)器端發(fā)送推送信息到客戶端,這是現(xiàn)代Web應(yīng)用程序的特性之一,但是“單向”的HTTP基于非常簡(jiǎn)單的問答模型,客戶端發(fā)送“請(qǐng)求”,服務(wù)器端才會(huì)進(jìn)行“回復(fù)”。這樣做不僅速度慢而且成本高。

為了保證用戶不需要頻繁地按下更新按鈕,程序員們想到了一些變通的方法,從而能夠通過HTTP協(xié)議“巧妙”地實(shí)現(xiàn)即時(shí)通訊。其中最簡(jiǎn)單常用的一種方法是輪詢(Polling),也就是瀏覽器端的腳本代碼根據(jù)設(shè)定好的頻率向服務(wù)器“詢問”有沒有新事件。輪詢需要為每個(gè)請(qǐng)求建立一個(gè)新的連接,得到“回復(fù)”之后,服務(wù)器就會(huì)中斷連接。如此一來就會(huì)花費(fèi)更多的時(shí)間,而且頻繁地新建TCP連接也會(huì)增加通信量,從而導(dǎo)致線路開銷和網(wǎng)絡(luò)負(fù)載倍增。另一種變通方案——長(zhǎng)輪詢(Long Polling)比輪詢更先進(jìn)一些,因?yàn)樗梢缘却?wù)器端有新的事件時(shí)才返回“通知”,縮短了可能會(huì)出現(xiàn)的通知延遲(Latency),讓消息傳輸更及時(shí),但并這沒有完全解決網(wǎng)絡(luò)負(fù)載大的問題。

HTTP streaming是變通方案中最好的一個(gè),它可以長(zhǎng)時(shí)間保持連接不斷開,同時(shí)在后臺(tái)實(shí)現(xiàn)與服務(wù)器按照不規(guī)則的順序交換數(shù)據(jù)(無需刷新頁(yè)面)。不過缺點(diǎn)是需要大量運(yùn)用JavaScript對(duì)象XMLHttpRequest,該腳本在不同瀏覽器中的實(shí)現(xiàn)效果并不相同,而且它總是需要兩個(gè)HTTP連接才能完成實(shí)時(shí)雙向通訊。

快速高效的WebSocket

WebSocket協(xié)議通過建立套接層(Socket)解決以上替代方案出現(xiàn)的問題,該套接層可以通過IP地址和端口永久地維持客戶端與服務(wù)器之間的信道,這樣兩端就可以在一個(gè)連接中同時(shí)完成雙向的通訊,而不需要頻繁地發(fā)送“請(qǐng)求”。在HTTP握手建立連接時(shí)有一個(gè)幾乎已經(jīng)被忘記的功能——“協(xié)議協(xié)商升級(jí)”(upgrade)。WebSocket現(xiàn)在將“協(xié)議協(xié)商升級(jí)”重新引入,通過HTTP握手完成應(yīng)用層協(xié)議的升級(jí)。然后瀏覽器就可以調(diào)用WebSocket API,而不是JavaScript對(duì)象。是否啟用了WebSocket連接可以通過瀏覽器地址欄中的統(tǒng)一資源標(biāo)識(shí)符(URI)“ws://”和“wss://”(WebSocket安全協(xié)議)進(jìn)行識(shí)別。

為了確保只有獲得允許的WebSocket終端之間才能進(jìn)行通訊,開發(fā)者在HTTP協(xié)議頭部增加了一些安全機(jī)制:客戶端在請(qǐng)求中生成一個(gè)基本的Base64編碼安全密鑰,服務(wù)器收到該密鑰之后對(duì)其進(jìn)行SHA-1加密,然后再返回給客戶端。從而避免WebSocket服務(wù)器遭遇未知源的惡意攻擊,保證只有已知的或者可信的客戶端才可以建立連接。

另一個(gè)重要的保護(hù)機(jī)制出現(xiàn)在HTTP握手之后:WebSocket客戶端必須通過簡(jiǎn)單的異或運(yùn)算模板加密每一個(gè)數(shù)據(jù)包,防止互相連接的代理服務(wù)器將WebSocket連接誤認(rèn)為成HTTP請(qǐng)求。如果不加密數(shù)據(jù)包的話,遭到惡意腳本劫持的代理服務(wù)器就有可能對(duì)其他用戶發(fā)起攻擊。加密之后,因?yàn)榇矸?wù)器無法讀取加密的信息,所以只能將其轉(zhuǎn)發(fā)到指定的終端。

目前,并非所有的瀏覽器都支持最新的WebSocket協(xié)議。但是這種情況在接下來的幾個(gè)月會(huì)發(fā)生改變,因?yàn)閃ebSocket作為HTML5的重要特性之一,可以提供先進(jìn)的互聯(lián)網(wǎng)特性,讓W(xué)eb應(yīng)用更加快速、高效和強(qiáng)大。

主站蜘蛛池模板: 亚洲一区二区三区麻豆| 免费在线播放毛片| 欧美国产日韩另类| 国产青榴视频| 九九久久精品免费观看| 99热这里都是国产精品| 人妻熟妇日韩AV在线播放| 国产男女免费完整版视频| 97人妻精品专区久久久久| 成人欧美日韩| 99久视频| 国产区精品高清在线观看| 欧美色亚洲| 国产视频只有无码精品| 国产女同自拍视频| 午夜欧美理论2019理论| 特级做a爰片毛片免费69| 国产成人亚洲毛片| 国产乱人激情H在线观看| 婷婷综合亚洲| 一级毛片在线播放免费| 精品国产香蕉伊思人在线| 1级黄色毛片| 国产成人调教在线视频| 无码免费视频| 免费看的一级毛片| 亚洲国产成人综合精品2020| 91色综合综合热五月激情| 自拍亚洲欧美精品| 亚洲中文字幕23页在线| 久久国产精品嫖妓| 国产国拍精品视频免费看 | 人妻丝袜无码视频| 国产一区亚洲一区| 伊人丁香五月天久久综合| 国产资源站| 这里只有精品在线播放| yjizz国产在线视频网| 亚洲国产精品日韩av专区| 婷婷午夜影院| 自拍偷拍欧美| 99九九成人免费视频精品| 日韩美女福利视频| 视频一本大道香蕉久在线播放| 国产午夜无码专区喷水| 91免费在线看| 国产欧美视频在线| 国产va在线观看免费| 91国内在线视频| 亚洲五月激情网| 欧美日韩导航| 免费看av在线网站网址| 欧美人人干| 欧美亚洲国产一区| 欧洲成人在线观看| 制服丝袜无码每日更新| 中文字幕啪啪| 91福利免费视频| 九九这里只有精品视频| 精品在线免费播放| 91在线播放国产| 午夜国产小视频| 国产精品福利在线观看无码卡| 一级毛片免费不卡在线视频| 国产精品欧美在线观看| 中文字幕在线不卡视频| 亚洲精品国产成人7777| 高清色本在线www| 国产对白刺激真实精品91| 中文国产成人精品久久| 国产91视频观看| 国产成人精品高清不卡在线| 亚洲中字无码AV电影在线观看| 自慰高潮喷白浆在线观看| 国产99免费视频| 国产午夜小视频| 亚洲一区二区在线无码| 日韩成人在线视频| 免费jizz在线播放| 欧美精品在线免费| 国产成人AV综合久久| 九九久久精品免费观看|