Tornado的异步特性使得其非常适合服务器的高并发处理,客户端与服务器的持久连接应用框架就是高并发的典型应用。而WebSocket正是在HTTP客户端与服务器之间建立持久连接的HTML5标准技术。本章将讲解WebSocket技术在Tornado框架中的应用。
WebSocket protocol是HTML5定义的一种新的标准协议(RFC6455),它实现了浏览器与服务器的双全工通信(full-duplex)。
1、WebSocket的应用场景
传统的HTTP和HTML技术使用客户端主动向服务器发送请求并获取回复。但是随着即时通讯需求的增多,这样的通信模式有时并不能满足应用的需求。
WebSocket与普通的Socket通讯类似,它打破了原来HTTP的Request和Response一对一的通信模型,同时打破了服务器只能被动地接受客户端请求的应用场景。也许读者听说过Ajax、Long poll等基于传统HTTP的动态客户端技术,但这些技术无不采用轮询技术,耗费了大量的网络带宽和计算资源。
而WebSocket正是为了应对这样的场景而制定的HTML5标准,相对于普通的Socket通信,WebSocket又在应用层定义了基本的交互流程,使得Tornado这样的服务器框架和JavaScript客户端可以构建出标准的WebSocket模块。
总结WebSocket的特点如下:
WebSocket适合服务端主动推送的场景。
相对于Ajax和Long poll等技术,WebSocket通信模型更高效。
WebSocket仍然与HTTP完成Internet通信。
因为是HTML5的标准协议,所以不受企业防火墙的拦截。
2、WebSocket的通信原理
WebSocket的通信原理是在客户端与服务器之间建立TCP持久链接,从而使得当服务器有消息需要推送给客户端时能够进行即时通信。
虽然WebSocket不是HTTP,但由于在Internet上HTML本事是由HTTP封装并进行传输的,所以WebSocket仍然需要与HTTP进行协作。IETF在RFC6455中定义了基于HTTP链路建立WebSocket信道的标准流程。
客户端通过发送如下HTTP Request告诉服务器需要建立一个WebSocket长链接信道:
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
读者可以发现其仍然是一个HTTP Request包,并对其中的内容非常熟悉。
HTTP请求方式:GET
请求地址:/stock_info
HTTP版本号:1.1
服务器主机域名:echo.websocket.org
Cookie信息:__token=ubcxx13
但是在HTTP Header中出现了4个特色的字段,他们是:
Connection:Upgrade Sec-WebSocket-Key:uRovscZjNol/umbTt5uKmw== Upgrade:websocket Sec-WebSocket-Version:13
这就是WebSocket建立链路的核心,它告诉Web服务器:客户端希望建立一个WebSocket链接,客户端使用的WebSocket版本时13,密钥是uRovscZjNol/umbTt5uKmw==。
服务器在收到该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
这依旧是一个标准的HTTP Response,其中与WebSocket相关的Header信息是:
Connection:Upgrade Upgrade:WebSocket Sec-WebSocket-Accept:rLHCKw/SKs09GAH/ZSFhBATDKrU=
前面的两条数据告诉客户端:服务器已经将本连接转换为WebSocket链接。而Sec-WebSocket-Accept是将客服端发送的Sec-WebSocket-Key加密后产生的数据,以让客服端确认服务器能够正常工作。
至此,在客户端与服务器之间已经建立了一个TCP持久链接,双发已经可以随时向对方发送消息。
以上是Python的Tornado之WebSocket的概念以及应用介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

Python脚本在Unix系统上无法运行的原因包括:1)权限不足,使用chmod xyour_script.py赋予执行权限;2)Shebang行错误或缺失,应使用#!/usr/bin/envpython;3)环境变量设置不当,可打印os.environ调试;4)使用错误的Python版本,可在Shebang行或命令行指定版本;5)依赖问题,使用虚拟环境隔离依赖;6)语法错误,使用python-mpy_compileyour_script.py检测。

使用Python数组比列表更适合处理大量数值数据。1)数组更节省内存,2)数组对数值运算更快,3)数组强制类型一致性,4)数组与C语言数组兼容,但在灵活性和便捷性上不如列表。

列表列表更好的forflexibility andmixDatatatypes,何时出色的Sumerical Computitation sand larged数据集。1)不可使用的列表xbilese xibility xibility xibility xibility xibility xibility xibility xibility xibility xibility xibles and comply offrequent elementChanges.2)

numpymanagesmemoryforlargearraysefefticefticefipedlyuseviews,副本和内存模拟文件.1)viewsAllowSinglicingWithOutCopying,直接modifytheoriginalArray.2)copiesCanbecopy canbecreatedwitheDedwithTheceDwithThecevithThece()methodervingdata.3)metservingdata.3)memore memore-mappingfileShessandAstaStaStstbassbassbassbassbassbassbassbassbassbassbb

Listsinpythondonotrequireimportingamodule,helilearraysfomthearraymoduledoneedanimport.1)列表列表,列表,多功能和canholdMixedDatatatepes.2)arraysaremoremoremoremoremoremoremoremoremoremoremoremoremoremoremoremoremeremeremeremericdatabuteffeftlessdatabutlessdatabutlessfiblesible suriplyElsilesteletselementEltecteSemeTemeSemeSemeSemeTypysemeTypysemeTysemeTypysemeTypepe。

pythonlistscanStoryDatatepe,ArrayModulearRaysStoreOneType,and numpyArraySareSareAraysareSareAraysareSareComputations.1)列出sareversArversAtileButlessMemory-Felide.2)arraymoduleareareMogeMogeNareSaremogeNormogeNoreSoustAta.3)

WhenyouattempttostoreavalueofthewrongdatatypeinaPythonarray,you'llencounteraTypeError.Thisisduetothearraymodule'sstricttypeenforcement,whichrequiresallelementstobeofthesametypeasspecifiedbythetypecode.Forperformancereasons,arraysaremoreefficientthanl

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3汉化版
中文版,非常好用

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能