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 相关文章推荐
HTML5如何适配 iPhone IOS 底部黑条
Mar 09 HTML / CSS
css3制作彩色边线3d立体按钮的示例(css3按钮)
May 06 HTML / CSS
一款基于css3和jquery实现的动画显示弹出层按钮教程
Jan 04 HTML / CSS
css3的过滤效果简单实例
Aug 03 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
Jul 31 HTML / CSS
CSS Houdini实现动态波浪纹效果
Jul 30 HTML / CSS
Android本地应用打开方法——通过html5写连接
Mar 11 HTML / CSS
Html5实现单张、多张图片上传功能
Apr 28 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
Apr 17 HTML / CSS
浅谈HTML5新增和废弃的标签
Apr 28 HTML / CSS
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
Apr 22 HTML / CSS
CSS list-style-type属性使用方法
May 21 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水印技术
2007/02/14 PHP
基于php权限分配的实现代码
2013/04/28 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
详细介绍Python函数中的默认参数
2015/03/30 Python
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
python 的列表遍历删除实现代码
2020/04/12 Python
Python 专题一 函数的基础知识
2017/03/16 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Django 日志配置按日期滚动的方法
2019/01/31 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
python之列表推导式的用法
2019/11/29 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
科茨沃尔德家居商店:Scotts of Stow
2018/06/29 全球购物
应届生保险求职信
2013/11/11 职场文书
英语系本科生求职信范文
2013/12/18 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
2019开业庆典剪彩仪式主持词!
2019/07/22 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript
css3 选择器
2022/05/11 HTML / CSS