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对图片照片进行边缘模糊处理的实现
Aug 08 HTML / CSS
需要知道的CSS3动画技术
Jan 01 HTML / CSS
使用css3匹配手机屏幕横竖状态
Jan 27 HTML / CSS
一款恶搞头像特效的制作过程 利用css3和jquery
Nov 21 HTML / CSS
CSS3中currentColor关键字的妙用
Feb 27 HTML / CSS
CSS3 RGBA色彩模式使用实例讲解
Apr 26 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
Jan 21 HTML / CSS
html5实现的便签特效(实战分享)
Nov 29 HTML / CSS
HTML5中的拖放实现详解
Aug 23 HTML / CSS
HTML5 解决苹果手机不能自动播放音乐问题
Dec 27 HTML / CSS
使用SVG实现提示框功能的示例代码
Jun 05 HTML / CSS
Html5同时支持多端sdk的小技巧
Nov 17 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
session 的生命周期是多长
2006/10/09 PHP
php 获取客户端的真实ip
2009/11/30 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
jQuery动态添加
2016/04/07 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
Node.js实现文件上传的示例
2017/06/28 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
transform python环境快速配置方法
2018/09/27 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Python二元赋值实用技巧解析
2019/10/25 Python
python实现人脸签到系统
2020/04/13 Python
python实现mean-shift聚类算法
2020/06/10 Python
简单了解Django项目应用创建过程
2020/07/06 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
临床医师个人自我评价
2014/04/06 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
2015中学教学工作总结
2015/07/22 职场文书
宣传委员竞选稿
2015/11/19 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
基于JavaScript实现省市联动效果
2021/06/22 Javascript
MySQL数据库之存储过程 procedure
2022/06/16 MySQL