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个性化字体_动力节点Java学院整理
Jul 12 HTML / CSS
css3.0新属性效果在ie下的解决方案
May 10 HTML / CSS
纯CSS3实现运行时钟的示例代码
Jan 25 HTML / CSS
html5-Canvas可以在web中绘制各种图形
Dec 26 HTML / CSS
html5中canvas学习笔记2-判断浏览器是否支持canvas
Jan 06 HTML / CSS
html5 css3实例教程 一款html5和css3实现的小机器人走路动画
Oct 20 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
Mar 21 HTML / CSS
HTML5新增加的功能详解
Sep 05 HTML / CSS
移动端html5模拟长按事件的实现方法
Sep 30 HTML / CSS
浅析数据存储的三种方式 cookie sessionstorage localstorage 的异同
Jun 04 HTML / CSS
html form表单基础入门案例讲解
Jul 21 HTML / CSS
企业开发CSS命名BEM代码规范实践
Feb 12 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
php部分常见问题总结
2008/03/27 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2006/11/24 Javascript
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
使用js声明数组,对象在jsp页面中(获得ajax得到json数据)
2013/11/05 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
基于node+websocket+html实现腾讯课堂聊天室聊天功能
2020/03/04 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
JS this关键字在ajax中使用出现问题解决方案
2020/07/17 Javascript
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
ETO男装官方网店:ETO Jeans
2019/02/28 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
教务处干事工作总结
2015/08/14 职场文书
python 破解加密zip文件的密码
2021/04/22 Python