认识WebSocket原理
来源:互联网 发布:淘宝app首页流量来源 编辑:程序博客网 时间:2024/06/08 17:28
一、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.1Host: server.example.comUpgrade: websocket (告诉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.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=Sec-WebSocket-Protocol: chat
这里开始就是HTTP最后负责的区域了,告诉客户,我已经成功切换协议啦~
Upgrade: websocketConnection: 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),
服务端就可以主动推送信息给客户端啦。
解决了上面同步有延迟,而且还非常消耗资源的这种情况。
- 认识WebSocket原理
- 认识WebSocket
- Websocket认识
- 认识WebSocket
- 认识websocket
- WebSocket 原理
- websocket原理
- Websocket原理
- WebSocket原理
- WebSocket原理
- Websocket原理
- Websocket原理
- WebSocket原理
- Websocket原理
- WebSocket原理
- Websocket原理
- websocket原理
- Websocket原理
- JS数组常用方法
- vue开发:vue2.0父子组件及非父子组件之间的通信方法
- [NOIP模拟]beautiful
- 密码学笔记3 群论,有限域
- TP3.2 简易封装增、删、改、查、上传、分页、操作日志
- 认识WebSocket原理
- centos 6.8 安装cmake 2.8.8 报错
- 人工智能: 自动寻路算法实现(二、深度优先搜索)
- 条件查询的时候,查询完成之后,不用在将选择的数据回传到页面,用于判断,让选择的option处于SELECT状态。
- leetcode 541. Reverse String II
- opencv图像处理之在手机上实现背景虚化
- poj 1753
- parse_url的用法,以及用途
- arcgis for js动态加载图层方法