成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第一節(jié):WebSoc

mo0n1andin / 1529人閱讀

摘要:上一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第九節(jié)防止跨站攻擊下一篇文章第三章概念及應(yīng)用第二節(jié)服務(wù)端編程的異步特性使得其非常適合服務(wù)器的高并發(fā)處理,客戶端與服務(wù)器的持久連接應(yīng)用框架就是高并發(fā)的典型應(yīng)用。因?yàn)槭堑臉?biāo)準(zhǔn)協(xié)議,所以不受企業(yè)防火墻的攔截。

上一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第九節(jié):防止跨站攻擊
下一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第二節(jié):服務(wù)端編程

Tornado的異步特性使得其非常適合服務(wù)器的高并發(fā)處理,客戶端與服務(wù)器的持久連接應(yīng)用框架就是高并發(fā)的典型應(yīng)用。而WebSocket正是在HTTP客戶端與服務(wù)器之間建立持久連接的HTML5標(biāo)準(zhǔn)技術(shù)。本章將講解WebSocket技術(shù)在Tornado框架中的應(yīng)用。
WebSocket protocol是HTML5定義的一種新的標(biāo)準(zhǔn)協(xié)議(RFC6455),它實(shí)現(xiàn)了瀏覽器與服務(wù)器的雙全工通信(full-duplex)。

1、WebSocket的應(yīng)用場(chǎng)景

傳統(tǒng)的HTTP和HTML技術(shù)使用客戶端主動(dòng)向服務(wù)器發(fā)送請(qǐng)求并獲取回復(fù)。但是隨著即時(shí)通訊需求的增多,這樣的通信模式有時(shí)并不能滿足應(yīng)用的需求。

WebSocket與普通的Socket通訊類似,它打破了原來HTTP的Request和Response一對(duì)一的通信模型,同時(shí)打破了服務(wù)器只能被動(dòng)地接受客戶端請(qǐng)求的應(yīng)用場(chǎng)景。也許讀者聽說過Ajax、Long poll等基于傳統(tǒng)HTTP的動(dòng)態(tài)客戶端技術(shù),但這些技術(shù)無不采用輪詢技術(shù),耗費(fèi)了大量的網(wǎng)絡(luò)帶寬和計(jì)算資源。

而WebSocket正是為了應(yīng)對(duì)這樣的場(chǎng)景而制定的HTML5標(biāo)準(zhǔn),相對(duì)于普通的Socket通信,WebSocket又在應(yīng)用層定義了基本的交互流程,使得Tornado這樣的服務(wù)器框架和JavaScript客戶端可以構(gòu)建出標(biāo)準(zhǔn)的WebSocket模塊。

總結(jié)WebSocket的特點(diǎn)如下:

WebSocket適合服務(wù)端主動(dòng)推送的場(chǎng)景。

相對(duì)于Ajax和Long poll等技術(shù),WebSocket通信模型更高效。

WebSocket仍然與HTTP完成Internet通信。

因?yàn)槭荋TML5的標(biāo)準(zhǔn)協(xié)議,所以不受企業(yè)防火墻的攔截。

2、WebSocket的通信原理

WebSocket的通信原理是在客戶端與服務(wù)器之間建立TCP持久鏈接,從而使得當(dāng)服務(wù)器有消息需要推送給客戶端時(shí)能夠進(jìn)行即時(shí)通信。

雖然WebSocket不是HTTP,但由于在Internet上HTML本事是由HTTP封裝并進(jìn)行傳輸?shù)模訵ebSocket仍然需要與HTTP進(jìn)行協(xié)作。IETF在RFC6455中定義了基于HTTP鏈路建立WebSocket信道的標(biāo)準(zhǔn)流程。

客戶端通過發(fā)送如下HTTP Request告訴服務(wù)器需要建立一個(gè)WebSocket長(zhǎng)鏈接信道:

GET /stock_info/?encoding=text HTTP/1.1
Host:echo.websocket.org
Origin:http://websocket.org
Cookie:__token=ubcxx13
Connection:Upgrade
Sec-WebSocket-Key:uRovscZjNol/umbTt5uKmw==
Upgrade:websocket
Sec-WebSocket-Version:13

讀者可以發(fā)現(xiàn)其仍然是一個(gè)HTTP Request包,并對(duì)其中的內(nèi)容非常熟悉。

HTTP請(qǐng)求方式:GET

請(qǐng)求地址:/stock_info

HTTP版本號(hào):1.1

服務(wù)器主機(jī)域名:echo.websocket.org

Cookie信息:__token=ubcxx13

但是在HTTP Header中出現(xiàn)了4個(gè)特色的字段,他們是:

Connection:Upgrade
Sec-WebSocket-Key:uRovscZjNol/umbTt5uKmw==
Upgrade:websocket
Sec-WebSocket-Version:13

這就是WebSocket建立鏈路的核心,它告訴Web服務(wù)器:客戶端希望建立一個(gè)WebSocket鏈接,客戶端使用的WebSocket版本時(shí)13,密鑰是uRovscZjNol/umbTt5uKmw==。

服務(wù)器在收到該Request后,如果同意建立WebSocket鏈接則返回類似如下的Response:

HTTP/1.1 101 WebSocket Protocol Handshake
Date:Fri,10 Feb 2012 17:38:18 GMT
Connection:Upgrade
Server:Kaazing Gateway
Upgrade:WebSocket
Access-Control-Allow-Origin:http://websocket.org
Access-Contril-Allow-Credentials:true
Sec-WebSocket-Accept:rLHCKw/SKs09GAH/ZSFhBATDKrU=
Access-Control-Allow-Headers:content-type

這依舊是一個(gè)標(biāo)準(zhǔn)的HTTP Response,其中與WebSocket相關(guān)的Header信息是:

Connection:Upgrade
Upgrade:WebSocket
Sec-WebSocket-Accept:rLHCKw/SKs09GAH/ZSFhBATDKrU=

前面的兩條數(shù)據(jù)告訴客戶端:服務(wù)器已經(jīng)將本連接轉(zhuǎn)換為WebSocket鏈接。而Sec-WebSocket-Accept是將客服端發(fā)送的Sec-WebSocket-Key加密后產(chǎn)生的數(shù)據(jù),以讓客服端確認(rèn)服務(wù)器能夠正常工作。

至此,在客戶端與服務(wù)器之間已經(jīng)建立了一個(gè)TCP持久鏈接,雙發(fā)已經(jīng)可以隨時(shí)向?qū)Ψ桨l(fā)送消息。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44772.html

相關(guān)文章

  • PythonTornado 三章HTML5 WebSocket念及應(yīng)用第三節(jié):客戶端編程

    摘要:上一篇文章第三章概念及應(yīng)用第二節(jié)服務(wù)端編程下一篇文章第四章網(wǎng)站部署第一節(jié)調(diào)試模式由于是的標(biāo)準(zhǔn)之一,所以主流瀏覽器的客戶端編程語音已經(jīng)支持的客戶端編程。此事件發(fā)生在收到了來自服務(wù)器的消息時(shí)。此事件發(fā)生在通信過程中有任何錯(cuò)誤時(shí)。 上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第二節(jié):服務(wù)端編程下一篇文章:Python:Tornado 第四章:T...

    miguel.jiang 評(píng)論0 收藏0
  • PythonTornado 三章HTML5 WebSocket念及應(yīng)用:第二節(jié):服務(wù)端編程

    摘要:上一篇文章第三章概念及應(yīng)用第一節(jié)概念下一篇文章第三章概念及應(yīng)用第三節(jié)客戶端編程定義了類用于處理鏈接的請(qǐng)求,應(yīng)用開發(fā)者應(yīng)該繼承該類并實(shí)現(xiàn)其中的函數(shù)。通常,這是服務(wù)器端編程的核心函數(shù),通過解析收到的消息做出相應(yīng)的處理。 上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第一節(jié):WebSocket概念下一篇文章: Python:Tornado 第三章...

    xfee 評(píng)論0 收藏0
  • PythonTornado 第四章:Tornado網(wǎng)站部署:一節(jié):調(diào)試模式

    摘要:上一篇文章第三章概念及應(yīng)用第三節(jié)客戶端編程下一篇文章第四章網(wǎng)站部署第二節(jié)靜態(tài)文件之前著重講解的編程知識(shí)點(diǎn),所有之前的例子都使用最簡(jiǎn)單的啟動(dòng)方式運(yùn)行。 上一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第三節(jié):客戶端編程下一篇文章:Python:Tornado 第四章:Tornado網(wǎng)站部署:第二節(jié):靜態(tài)文件 之前著重講解Tornado的編程知...

    desdik 評(píng)論0 收藏0
  • PythonTornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第九節(jié):防止跨站攻擊

    摘要:上一篇文章第二章實(shí)戰(zhàn)演練開發(fā)網(wǎng)站第八節(jié)用戶身份認(rèn)證下一篇文章第三章概念及應(yīng)用第一節(jié)概念跨站請(qǐng)求偽造,或是一種對(duì)網(wǎng)站的惡意利用。其中是存在漏洞的網(wǎng)站,而是存在攻擊行為的惡意網(wǎng)站。 上一篇文章:Python:Tornado 第二章:實(shí)戰(zhàn)演練:開發(fā)Tornado網(wǎng)站:第八節(jié):用戶身份認(rèn)證下一篇文章:Python:Tornado 第三章:HTML5 WebSocket概念及應(yīng)用:第一節(jié):Web...

    Zoom 評(píng)論0 收藏0
  • PythonTornado 開篇

    摘要:作為網(wǎng)站的基礎(chǔ)框架,于年月日發(fā)布,目前已經(jīng)獲得了很多社區(qū)的支持,并且在一系列不同的場(chǎng)景種得到應(yīng)用。使用該框架,開發(fā)者能夠快速開發(fā)出即安全又強(qiáng)大的用戶身份認(rèn)證機(jī)制,例如機(jī)制用戶身份認(rèn)證防止跨站攻擊等等。 下一篇文章:Python:Tornado 第一章:異步及協(xié)程基礎(chǔ):第一節(jié):同步與異步I/O Tornado是一個(gè)可擴(kuò)展的非阻塞Web服務(wù)器以及相關(guān)工具的總稱。Tornado每秒可以處理...

    Anshiii 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<