websocket与http优缺点
一、websocket与http
WebSocket是HTML5中的协议,支持持久连接;而Http协议不支持持久连接。
首先HTMl5指的是一系列新的API,或者说新规范,新技术。WebSocket是HTML5中新协议、新API.跟HTTP协议基本没有关系。
Http协议本身只有1.0和1.1,也就是所谓的Keep-alive,把多个Http请求合并为一个。
WebSocket是HTML5中的协议,支持持久连接;而Http协议不支持持久连接。
二、Websocket是什么样的协议,具体有什么优点
首先,Websocket是一个持久化的协议,相对于HTTP这种非持久的协议来说
HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。
在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。但是请记住 Request = Response , 在HTTP中永远是这样,也就是说一个request只能有一个response。而且这个response也是被动的,不能主动发起。
三、Websocket的作用
(1)ajax轮询
ajax轮询的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。
(2)long poll(长轮询)
long poll 其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型(一直打电话,没收到就不挂电话),也就是说,客户端发起连接后,如果没消息,就一直不返回Response给客户端(对于PHP有最大执行时间,建议没消息,执行到一定时间也返回)。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。
从上面可以看出其实这两种方式,都是在不断地建立HTTP连接,关闭HTTP协议,由于HTTP是非状态性的,每次都要重新传输 identity info (鉴别信息),来告诉服务端你是谁。然后等待服务端处理,可以体现HTTP协议的另外一个特点,被动性。
何为被动性呢,其实就是,服务端不能主动联系客户端,只能有客户端发起。从上面很容易看出来,不管怎么样,上面这两种都是非常消耗资源的。
ajax轮询 需要服务器有很快的处理速度和资源。(速度)long poll 需要有很高的并发,也就是说同时接待客户的能力。(场地大小)
(3)WebSocket
Websocket解决了HTTP的这几个难题。首先,被动性,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端啦。解决了上面同步有延迟的问题。
解决服务器上消耗资源的问题:其实我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(php等)来处理。简单地说,我们有一个非常快速的 接线员(Nginx) ,他负责把问题转交给相应的 客服(Handler) 。Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持久连接,有信息的时候客服想办法通知接线员,然后接线员在统一转交给客户。
由于Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。
目前唯一的问题是:不兼容低版本的IE
1WebSocket是HTML5中的协议,支持持久连接;而Http协议不支持持久连接。
首先HTMl5指的是一系列新的API,或者说新规范,新技术。WebSocket是HTML5中新协议、新API.跟HTTP协议基本没有关系。
Http协议本身只有1.0和1.1,也就是所谓的Keep-alive,把多个Http请求合并为一个。
websocket与http优缺点相关推荐
- WebSocket的初步认识
WebSocket协议 WebSocket 协议在2008年诞生,2011年成为国际标准.所有浏览器都已经支持了. 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息, ...
- 全双工通信的 WebSocket
一. WebSocket 是什么? WebSocket 是一种网络通信协议.在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准.并由 RFC7936 补充规范.W ...
- websocket技术分享
WebSocket技术分享 背景 为什么要用消息推送?主要是目前我们面授业务和ulcd很多场景,需要对消息的实时性要求高,比如学员上课老师发送课程资料,学员签到大屏显示签到状态,学员考试练习前后,大屏 ...
- Java面试题之中间件
消息中间件&RabbitMQ 1.为什么要使用MQ 核心:解耦,异步,削峰 1)解耦:A 系统发送数据到 BCD 三个系统,通过接口调用发送.如果 E 系统也要这个数据呢?那如果 C 系统现在 ...
- WebSocket 集群解决方案
欢迎关注方志朋的博客,回复"666"获面试宝典 问题起因 最近做项目时遇到了需要多用户之间通信的问题,涉及到了WebSocket握手请求,以及集群中WebSocket Sessio ...
- 3w字带你揭开WebSocket的神秘面纱~
目录 一. WebSocket 简介 WebSocket 是一种基于 TCP 的网络协议.在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准,并由 RFC7936 ...
- 分布式 WebSocket 集群解决方案
作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...
- Unity3d 下websocket的使用
今天介绍一下如何在Unity3D下使用WebSocket. 首先介绍一下什么是websocket,以及与socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目. WebS ...
- 京东到家基于netty与websocket的实践
作者:李天翼,软件开发工程师,任职于达达京东到家后台研发团队,负责订单流程的开发工作. 背景 在京东到家商家中心系统中,商家提出在 Web 端实现自动打印的需求,不需要人工盯守点击打印,直接打印小票, ...
- socket/WebSocket/WebService/http/https概念
学习了这么久的java技术, 但是这5个 socket/WebSocket/WebService/http/https 概念还不是很清楚, 总是很模糊,或者是弄混. 惭愧! ! 学习之前, 要对这个 ...
最新文章
- Router通过DHCP上网配置方法
- mitmdump脚本中使用requests模块发送请求
- 那些35岁的程序员都去哪了
- 用C# (.NET Core) 实现迭代器设计模式
- php 拼接wav,将两个Wav文件合并为一个 | 学步园
- (3)插入排序之一 直接插入排序
- 【渝粤教育】国家开放大学2018年春季 8636-21T实用心理学 参考试题
- cpp存储类型说明符(storage class specifier)
- java 开发电商平台,JAVA项目实战开发电商项目案例(一)前后端项目分离
- [转]中国七大顶级黑客X档案
- Win10驱动数字签名的解决办法
- 思科无线服务器,Cisco统一无线网络TACACS+配置
- 如何在论文中正确引用参考文献(自动标注)
- Spring Boot 教程
- 解决Wireshark抓包跟踪流后http的响应正文乱码
- dell文件服务器连接,配置DELL MD3200存储服务器连接到多台主机
- k宝无法连接计算机,农行二代K宝插电脑上显示无法识别怎么办?
驱动已正确安装了,电脑的USB接口插其他U盘什么的都正常的...
- 2018,程序员生活的两个兴趣爱好
- python 病毒 文件复制_python病毒
- AI Earth 地球科学云平台——用数据感知地球世界(含福利)