WebSocket 和HTTP的区别及原理

有时候还会有老铁在考虑在什么样的环境下使用WebSocket,什么样的环境下使用HTTP,今天我们来说下WebSocket和HTTP。

 

  WebSocket和HTTP的区别

 

  http协议是用在应用层的协议,他是基于tcp协议的,http协议建立链接也必须要有三次握手才能发送信息。

  http链接分为短链接,长链接,短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接。保持TCP连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。 

  WebSocket他是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用,他是全双工通信。在webSocket协议下客服端和浏览器可以同时发送信息。

  建立了WenSocket之后服务器不必在浏览器发送request请求之后才能发送信息到浏览器。这时的服务器已有主动权想什么时候发就可以发送信息到服务器。而且信息当中不必在带有head的部分信息了与http的长链接通信来说,这种方式,不仅能降低服务器的压力。而且信息当中也减少了部分多余的信息。

 

  HTTP的长连接与websocket的持久连接

 

  HTTP1.1的连接默认使用长连接(persistent connection),

即在一定的期限内保持链接,客户端会需要在短时间内向服务端请求大量的资源,保持TCP连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。

  在一个TCP连接上可以传输多个Request/Response消息对,所以本质上还是Request/Response消息对,仍然会造成资源的浪费、实时性不强等问题。

如果不是持续连接,即短连接,那么每个资源都要建立一个新的连接,HTTP底层使用的是TCP,那么每次都要使用三次握手建立TCP连接,即每一个request对应一个response,将造成极大的资源浪费。

  长轮询,即客户端发送一个超时时间很长的Request,服务器hold住这个连接,在有新数据到达时返回Response

websocket的持久连接

  只需建立一次Request/Response消息对,之后都是TCP连接,避免了需要多次建立Request/Response消息对而产生的冗余头部信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebSocket是一种在单个TCP连接上进行全双工通信的通信协议。它通过HTTP协议进行握手,然后在同一个TCP连接上进行数据传输。下面是WebSocket原理和流程: 1. 客户端发起WebSocket连接请求:客户端通过发送一个HTTP请求报文,其中包含特定的Upgrade头部,请求服务器升级到WebSocket协议。 2. 服务器响应握手请求:服务器收到客户端的请求后,检查是否支持WebSocket协议。如果支持,服务器会发送一个HTTP响应报文作为握手响应,其中包含特定的Upgrade头部,并返回状态码101 Switching Protocols,表示升级到WebSocket协议成功。 3. WebSocket连接建立:客户端收到服务器的握手响应后,会验证响应是否符合WebSocket协议规范。如果验证通过,客户端和服务器的连接就建立起来了。 4. 数据传输:一旦WebSocket连接建立成功,客户端和服务器就可以在同一个TCP连接上进行双向的数据传输。双方可以发送和接收任意类型的数据,不再受HTTP协议的限制。 5. 连接关闭:当客户端或服务器决定关闭WebSocket连接时,可以发送一个特定的关闭帧来进行通知。双方收到关闭帧后,会进行相应的处理并关闭连接。 总结起来,WebSocket通过HTTP协议进行握手,建立起全双工的通信连接,然后在该连接上进行数据传输。相比于HTTP协议WebSocket具有更低的延迟和更高的实时性,适用于需要频繁、实时交互的应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值