HTML5实现WebSocket协议原理浅析


Posted in HTML / CSS onJuly 07, 2014

WebSocket协议的目的是为了工作于现有的网络基础设施。作为这一设计原则的一部分,WebSocket连接的协议规范定义了一个HTTP连接作为其开始生命周期,进而保证其与pre-WebSocket世界的完全向后兼容。通常来说从HTTP协议切换WebSocket称为WebSocket握手。

浏览器发送一个请求到服务器,这表明它想开关从HTTP WebSocket协议。客户端通过升级标题表达的愿望,代码如下所示:

复制代码
代码如下:
GET ws://echo.websocket.org/?encoding=text HTTP/1.1
Origin: http://websocket.org
Cookie: __utma=99as
Connection: Upgrade
Host: echo.websocket.org
Sec-WebSocket-Key: uRovscZjNol/umbTt5uKmw==
Upgrade: websocket
Sec-WebSocket-Version: 13

如果服务器理解WebSocket协议,它通过升级头同意协议切换。

复制代码
代码如下:
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-Control-Allow-Credentials: true
Sec-WebSocket-Accept: rLHCkw/SKsO9GAH/ZSFhBATDKrU=
Access-Control-Allow-Headers: content-type

此时HTTP连接分解并取代了WebSocket连接在同一底层TCP / IP连接。WebSocket连接使用HTTP(80)和HTTPS端口一样(443),默认情况下。

连接建立后,WebSocket数据帧可以发送客户机和服务器之间来回在全双工模式下。两种文本和二进制帧可以在两个方向同时发送。只有两个字节数据最小陷害。对于文本帧,每一帧始于0 x00字节,以0 xff字节结束,包含utf - 8数据。WebSocket文本框架使用一个终结者,而二进制帧使用前缀长度。

HTML / CSS 相关文章推荐
详解CSS3伸缩布局盒模型Flex布局
Aug 20 HTML / CSS
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
Apr 01 HTML / CSS
css3圆角边框和边框阴影示例
May 05 HTML / CSS
css3边框_动力节点Java学院整理
Jul 11 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
Jan 23 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
HTML5之web workers_动力节点Java学院整理
Jul 17 HTML / CSS
html5通过canvas实现刮刮卡效果示例分享
Jan 27 HTML / CSS
html5 更新图片颜色示例代码
Jul 29 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
Dec 19 HTML / CSS
什么是css原子化,有什么用?
Apr 24 HTML / CSS
使用CSS定位HTML元素的实现方法
Jul 07 HTML / CSS
HTML5新增的表单元素和属性实例解析
Jul 07 #HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
Jul 07 #HTML / CSS
html5的自定义data-*属性与jquery的data()方法的使用
Jul 02 #HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
Jun 30 #HTML / CSS
HTML5通过调用canvas对象的getContext()方法来获取绘图环境
Jun 23 #HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 #HTML / CSS
HTML5 在canvas中绘制矩形附效果图
Jun 23 #HTML / CSS
You might like
php数据库连接
2006/10/09 PHP
php自动加载的两种实现方法
2010/06/21 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
PHP创建自己的Composer包方法
2018/04/09 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
Prototype Object对象 学习
2009/07/12 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
jQuery知识点整理
2015/01/30 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
Vue 基于 vuedraggable 实现选中、拖拽、排序效果
2020/05/18 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python多任务之协程的使用详解
2019/08/26 Python
python 字典的打印实现
2019/09/26 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
工商企业管理实习自我鉴定
2013/12/04 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
2014春晚主持词
2014/03/25 职场文书
王力宏牛津大学演讲稿
2014/05/22 职场文书
2014年党务工作总结
2014/11/25 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
咖啡厅里的创业计划书
2019/08/21 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python