WebSocket 是什么原理?为什么可以实现持久连接?(笔记)


HTTP协议

1. 非持久协议
  • HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
  • 在HTTP1.1中,有一个keep-alive,即,在一个HTTP连接中,可以发送多个Request,接收多个Response
  • 总的来说,在HTTP中永远是一个request只能有一个response。
2. 被动性
  • response是被动的,不能主动发起。即,服务端无法主动推送信息给客户端。
3. 无状态性
  • 通俗的说就是,服务器因为每天要接待太多客户了,是个健忘鬼,你一挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。

WebSocket

1. 与HTTP的关系
  • WebSocket与HTTP都是协议,关系如下:
WebSocket与HTTP的关系
2. 实现实时信息传递的方式
  • ajax轮询
  • long poll
  • WebSocket
3. ajax轮询
  • 原理:让浏览器每隔几秒发送一次请求,询问服务器是否有新信息。
  • 缺点:需要服务器有很快的处理速度和资源。(速度)
4. long poll,又叫长连接或长轮询
  • 原理:采取阻塞模型(一直打电话,没收到就不挂电话),即,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。
  • 缺点:需要有很高的并发,也就是说同时接待客户的能力。(场地大小)
5. WebSocket
  • 解决了HTTP的被动性,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端。
  • 做到了只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • WebSocket简介 谈到Web实时推送,就不得不说WebSocket。在WebSocket出现之前,很多网站为...
    吧啦啦小汤圆阅读 8,207评论 15 75
  • 一、什么是Websocket?他与http的关系如何? WebSocket是HTML5出的东西(协议),也就是说H...
    Java进阶架构师阅读 2,149评论 0 11
  • 一、websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或...
    许小小晴阅读 490评论 0 0
  • 香葱煎饼 王新(女) 好久不做这道菜了 香葱煎饼 面粉不贵,加入适量的水和盐调匀 是在妈妈手把手的教导下 ...
    玛托娃阅读 247评论 2 0