认识WebSocket原理
2017-07-12 10:03
113 查看
一、HTTP是什么样的协议,具体有什么优点
HTTP的生命周期通过 Request来界定,也就是一个
Request一个
Response,那么在
HTTP1.0中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住
Request = Response,在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
二、WebSocket是什么样的协议,具体有什么优点
首先Websocket是基于HTTP协议的,或者说借用了HTTP的协议来完成一部分握手。首先我们来看个典型的
Websocket握手
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket (告诉 [code]Apache、
Nginx等服务器:注意啦,我发起的是Websocket协议)
Connection: Upgrade (连接)
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== (
Base64 encode的值,这个是浏览器随机生成的)
Sec-WebSocket-Protocol: chat, superchat(用户定义的字符串,用来区分同URL下,不同的服务所需要的协议)
Sec-WebSocket-Version: 13 服务器所使用的
Websocket Draft(协议版本)()
Origin: http://example.com
HTTP/1.1101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= Sec-WebSocket-Protocol: chat
这里开始就是HTTP最后负责的区域了,告诉客户,我已经成功切换协议啦~
Upgrade: websocket Connection: Upgrade
三、Websocket的作用
Ajax轮询——"定时的通过Ajax查询服务端"。概念:
轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
<script type="text/javascript"> var getting = { url:'server.php', dataType:'json', success:function(res) { console.log(res); } }; //关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。 window.setInterval(function(){$.ajax(getting)},1000); </script>
Ajax长轮询------属于Ajax轮询的升级版
作用:在客户端和服务端都进行了一些改造,使得消耗更低,速度更快。
<script type="text/javascript"> //前端Ajax持续调用服务端,称为Ajax轮询技术 var getting = { url:'server.php', dataType:'json', success:function(res) { console.log(res); $.ajax(getting); //关键在这里,回调函数内再次请求Ajax } //当请求时间过长(默认为60秒),就再次调用ajax长轮询 error:function(res){ $.ajax($getting); } }; $.ajax(getting); </script>
言归正传,我们来说Websocket吧
服务器因为每天要接待太多客户了,是个健忘鬼,你一挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。所以在这种情况下出现了,Websocket出现了。他解决了HTTP的这几个难题。首先,被动性,当服务器完成协议升级后(HTTP->Websocket),
服务端就可以主动推送信息给客户端啦。
解决了上面同步有延迟,而且还非常消耗资源的这种情况。
相关文章推荐
- .NET中的Attribute(一)----认识
- 深入理解ARM体系架构(S3C6410)---认识S3C6410
- 生活-认识
- Android 对文件存储目录的认识
- 全面认识UML类图元素
- Base64编码认识(Java 测试)
- 认识SVM
- 认识多渲染目标(Multiple Render Targets)技术 【转】
- 关于AIR的一点认识
- 认识HTML5的WebSocket
- 认识SVN
- 认识标签
- 认识“Silverlight”
- 说说IUnitOfWork~认识IUnitOfWork,为什么要出现IUnitOfWork接口
- Cocos2d-x学习笔记(二)——Cocos2d的基本框架认识
- Java内置锁的简单认识
- ASP进阶学习必经之认识数学函数11种
- Redis认识的几个误区
- pdo对象认识与应用
- JVM的垃圾回收简单认识