一、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优缺点相关推荐

  1. WebSocket的初步认识

    WebSocket协议 WebSocket 协议在2008年诞生,2011年成为国际标准.所有浏览器都已经支持了. 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息, ...

  2. 全双工通信的 WebSocket

    一. WebSocket 是什么? WebSocket 是一种网络通信协议.在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准.并由 RFC7936 补充规范.W ...

  3. websocket技术分享

    WebSocket技术分享 背景 为什么要用消息推送?主要是目前我们面授业务和ulcd很多场景,需要对消息的实时性要求高,比如学员上课老师发送课程资料,学员签到大屏显示签到状态,学员考试练习前后,大屏 ...

  4. Java面试题之中间件

    消息中间件&RabbitMQ 1.为什么要使用MQ 核心:解耦,异步,削峰 1)解耦:A 系统发送数据到 BCD 三个系统,通过接口调用发送.如果 E 系统也要这个数据呢?那如果 C 系统现在 ...

  5. WebSocket 集群解决方案

    欢迎关注方志朋的博客,回复"666"获面试宝典 问题起因 最近做项目时遇到了需要多用户之间通信的问题,涉及到了WebSocket握手请求,以及集群中WebSocket Sessio ...

  6. 3w字带你揭开WebSocket的神秘面纱~

    目录 一. WebSocket 简介 WebSocket 是一种基于 TCP 的网络协议.在 2009 年诞生,于 2011 年被 IETF 定为标准 RFC 6455 通信标准,并由 RFC7936 ...

  7. 分布式 WebSocket 集群解决方案

    作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...

  8. Unity3d 下websocket的使用

    今天介绍一下如何在Unity3D下使用WebSocket. 首先介绍一下什么是websocket,以及与socket,和http的区别与联系,然后介绍一下websocket的一些开源的项目. WebS ...

  9. 京东到家基于netty与websocket的实践

    作者:李天翼,软件开发工程师,任职于达达京东到家后台研发团队,负责订单流程的开发工作. 背景 在京东到家商家中心系统中,商家提出在 Web 端实现自动打印的需求,不需要人工盯守点击打印,直接打印小票, ...

  10. socket/WebSocket/WebService/http/https概念

    学习了这么久的java技术, 但是这5个 socket/WebSocket/WebService/http/https  概念还不是很清楚, 总是很模糊,或者是弄混. 惭愧! ! 学习之前, 要对这个 ...

最新文章

  1. Router通过DHCP上网配置方法
  2. mitmdump脚本中使用requests模块发送请求
  3. 那些35岁的程序员都去哪了
  4. 用C# (.NET Core) 实现迭代器设计模式
  5. php 拼接wav,将两个Wav文件合并为一个 | 学步园
  6. (3)插入排序之一 直接插入排序
  7. 【渝粤教育】国家开放大学2018年春季 8636-21T实用心理学 参考试题
  8. cpp存储类型说明符(storage class specifier)
  9. java 开发电商平台,JAVA项目实战开发电商项目案例(一)前后端项目分离
  10. [转]中国七大顶级黑客X档案
  11. Win10驱动数字签名的解决办法
  12. 思科无线服务器,Cisco统一无线网络TACACS+配置
  13. 如何在论文中正确引用参考文献(自动标注)
  14. Spring Boot 教程
  15. 解决Wireshark抓包跟踪流后http的响应正文乱码
  16. dell文件服务器连接,配置DELL MD3200存储服务器连接到多台主机
  17. k宝无法连接计算机,农行二代K宝插电脑上显示无法识别怎么办? 驱动已正确安装了,电脑的USB接口插其他U盘什么的都正常的...
  18. 2018,程序员生活的两个兴趣爱好
  19. python 病毒 文件复制_python病毒
  20. AI Earth 地球科学云平台——用数据感知地球世界(含福利)

热门文章

  1. FAT 32 文件系统学习
  2. 英文书籍下载网站推荐
  3. 洛谷·[HNOI2015]落忆枫音
  4. TCP/IP指南(RFC1180)
  5. UVA489 刽子手的游戏 Hangman Judge
  6. 人工智能对智能建筑有哪些影响,智能建筑发展存在哪些问题?
  7. java cookie 跨域共享_跨域共享cookie
  8. JavaOOP项目 - 嗖嗖移动业务大厅
  9. (转)宅男程序员福利:来自纽约的28位智慧与美貌并存的IT女神
  10. 解决wps缺少字体的问题