网络传输知识:WebSocket协议详解

一、WebSocket与HTTP

WebSocket是HTML5出的协议,也就是说HTTP协议没有变化,但HTTP是不支持持久连接的(长连接,循环连接的不算)

首先HTTP有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说它是HTTP协议上的一种补充可以通过这样一张图理解
在这里插入图片描述
有交集,但是并不是全部。

二、HTTP瓶颈

  • 一条连接上只可以发送一个请求
  • 请求只能从客户端开始。客户端不可以接收除了响应以外的指令。
  • 请求 / 响应首部未经过压缩就直接进行传输。首部的信息越多,那么延迟就越大。
  • 发送冗长的首部。每次互相发送相同的首部造成的浪费越多
  • 可以任意选择数据压缩格式。非强制压缩发送

(1)长轮询
指:客户端发起连接后,若没消息,就一直不返回response给客户端,直到有消息才返回,返回之后,客户端再次建立连接,周而复始
(2)Ajax轮询
指:浏览器每隔多少秒就发送一次请求,询问服务器是否有新消息。

Ajax轮询:需要服务器有高速处理速度和资源
长轮询:需要很高的并发

三、WebSocket

在这里插入图片描述
websocket协议具有以下的特点:

  • 推送功能
    支持服务器端向客户端推送功能。服务器可以直接发送数据而不用等待客户端的请求。
  • 减少通信量
    只要建立起websocket连接,就一直保持连接,在此期间可以源源不断的传送消息,直到关闭请求。也就避免了HTTP的非状态性。
    和http相比,不但每次连接时的总开销减少了,而且websocket的首部信息量也小 ,通信量也减少了。
  • 减少资源消耗
    那么为什么他会解决服务器上消耗资源的问题呢?
    其实我们所用的程序是要经过两层代理的,即HTTP协议在Nginx等服务器的解析下,然后再传送给相应的Handler(PHP等)来处理。
    简单地说,我们有一个非常快速的接线员(Nginx),他负责把问题转交给相应的客服(Handler)。本身接线员基本上速度是足够的,但是每次都卡在客服(Handler)了,老有客服处理速度太慢。导致客服不够。Websocket就解决了这样一个难题,建立后,可以直接跟接线员建立持久连接,有信息的时候客服想办法通知接线员,然后接线员在统一转交给客户。这样就可以解决客服处理速度过慢的问题了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值