网站后台清除缓存在哪,wordpress插件mip,成都房地产网站建设,网站建设项目环境影响评价目录HTTP的缺陷
现在的应用场景可能更多的是#xff0c;前端发起一次HTTP请求#xff0c;服务器后端返回一次HTTP响应。但是有这样的场景#xff0c;是需要服务器主动给前端发送请求的。 最常见的场景是扫码登陆。 这里有两种解决方案#xff0c;一种是微信的解决方案#xf…HTTP的缺陷
现在的应用场景可能更多的是前端发起一次HTTP请求服务器后端返回一次HTTP响应。但是有这样的场景是需要服务器主动给前端发送请求的。 最常见的场景是扫码登陆。 这里有两种解决方案一种是微信的解决方案前端代码每隔一两秒就发送一个HTTP请求给服务器这样服务器就能返回响应消息了。想一想是不是登陆微信扫码有时候会感觉卡了一两秒才登录这是因为电脑登陆二维码出现后手机扫了它然后电脑隔一两秒发送一个询问给服务器问这个二维码被扫了没有。 但是这个缺点非常明显会不停的发送请求这占用了带宽即使一两秒可能有的人还是觉得卡不满意。 另一种是百度网盘的解决方案叫长轮询。我们知道一般HTTP请求发出后会给服务器留一定时间做响应假设这个时间设置的比较长比如30s那服务器只要在30s内受到了扫码请求都可以立即返回给客户端。假设超时还没有返回那就立马发起下一次请求。这样可以减少http请求数量。 这两种方式本质上还是客户端主动获取数据扫码可能还好假设是游戏的话数据量非常庞大那就没法主动推送给客户端了吗实际上是有的那就是WebSocket
全双工与半双工
TCP连接的两端同一时间里双方都可以主动向对方发送数据。这就是所谓的全双工。
而现在使用最广泛的HTTP/1.1也是基于TCP协议的同一时间里客户端和服务器只能有一方主动发数据这就是所谓的半双工。
也就是说好好的全双工 TCP被 HTTP/1.1 用成了半双工。
这是由于 HTTP 协议设计之初考虑的是看看网页文本的场景能做到客户端发起请求再由服务器响应就够了根本就没考虑网页游戏这种客户端和服务器之间都要互相主动发大量数据的场景。
所以为了更好的支持这样的场景我们需要另外一个基于TCP的新协议。
于是新的应用层协议WebSocket就被设计出来了。
大家别被这个名字给带偏了。虽然名字带了个socket但其实 socket 和 WebSocket 之间就跟雷峰和雷峰塔一样二者接近毫无关系。 怎么建立WebSocket连接
还是得先tcp三次握手然后用http先进行一次通信这里假设客户端想建立WebSocket连接就可以在请求头里带上一些特殊字段 返回字段101是指协议切换
WebSocket的使用场景
WebSocket完美继承了 TCP 协议的全双工能力并且还贴心的提供了解决粘包的方案。
它适用于需要服务器和客户端浏览器频繁交互的大部分场景比如网页/小程序游戏网页聊天室以及一些类似飞书这样的网页协同办公软件。