那些很重要,但是不常用的技术,websocket( 二 )
虽然可以做到实时更新 , 但是为了保留响应 , 一次连接饿持续时间也变长了 。 期间 , 为了维持连接会消费更多的资源 。
从上面两种方式中 , 其实可以看出是再不断的建立http连接 , 然后等待服务器处理 , 可以体现出了http的特点:被动性 , 即:请求只能由客户端发起 。 服务器端不能主动联系客户端 。 不管怎么样 , 上面这两种都是非常消耗资源的 。 ajax轮询 需要服务器有很快的处理速度和资源 。 (速度)长轮询 需要有很高的并发 , 也就是说同时接待客户的能力 。 (场地大小)
除了以上这些 , HTTP还是一个无状态协议 。 通俗的说就是 , 服务器因为每天要接待太多浏览器了 , 是个健忘鬼 , 你一断连接 , 他就把你的东西全忘光了 , 把你的东西全丢掉了 。 你第二次还得再告诉服务器一遍 。
WebSocketWebSocket其实是HTTP协议上的一种补充 , 他们有交集但并不是全部 。
文章插图
一旦web服务器和客户端建立起websocket协议的通信连接 , 之后所有的通信都依靠这个专用连接进行 。 只需要经过一次HTTP请求 , 就可以做到源源不断的信息传送了 。
文章插图
websocket是基于HTTP协议的 , 或者说借用了http的协议来完成一部分握手 。 为了实现websocket通信 , 在http建立连接后 , 还需要进行一次“握手”的步骤 。
握手 · 请求GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 Origin:
为了实现websocket通信 , 需要用到http的Upgrade首部字段 , 告知服务器通信协议已发生改变:我要发起的是websocket协议 。 以达到握手的目的 。 Sec-WebSocket-Key字段记录着握手必不可少的键值 , 用于验证服务器是否支持websocket通信 。 Sec-WebSocket-Protocol字段记录的是所需要使用的协议 。
握手 · 响应HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk= Sec-WebSocket-Protocol: chat
对于客户端的请求 , 服务器返回状态码 101 Switching Protocols的响应 。 返回Upgrate告诉客户端即将升级的协议是Websocket协议 。 Sec-WebSocket-Accept字段值是由握手请求中的Sec-WebSocket-Key字段值加密过后生成的 。 Sec-WebSocket-Protocol 则是表明最总使用的协议 。
到这里 , http已经完成所有他的工作了 , 接下来通信时不再使用HTTP的数据帧 , 而是使用websocket独立的数据帧 。
文章插图
因此 , websocket协议具有以下的特点:
- 推送功能支持服务器端向客户端推送功能 。 服务器可以直接发送数据而不用等待客户端的请求 。
- 减少通信量只要建立起websocket连接 , 就一直保持连接 , 在此期间可以源源不断的传送消息 , 直到关闭请求 。 也就避免了HTTP的非状态性 。
- 减少资源消耗那么为什么他会解决服务器上消耗资源的问题呢?其实我们所用的程序是要经过两层代理的 , 即HTTP协议在Nginx等服务器的解析下 , 然后再传送给相应的Handler(PHP等)来处理 。 简单地说 , 我们有一个非常快速的接线员(Nginx) , 他负责把问题转交给相应的客服(Handler) 。 本身接线员基本上速度是足够的 , 但是每次都卡在客服(Handler)了 , 老有客服处理速度太慢 。 导致客服不够 。 Websocket就解决了这样一个难题 , 建立后 , 可以直接跟接线员建立持久连接 , 有信息的时候客服想办法通知接线员 , 然后接线员在统一转交给客户 。 这样就可以解决客服处理速度过慢的问题了 。
- 任正非:每天思考失败,那些杀不死你的终让你更强大
- 白帽子:聊聊安全界的那些书
- 看了PS5的拆机视频,下世代主机最重要的配件可能是空调
- 给爸妈买手机需要注意些什么?这几点很重要
- 大数据专业学习的是Python,但是考研考C语言,该如何自学
- 多图看懂工业机器人那些事,轻松掌握关键知识点
- 出门儿在外不求人问路——手机导航的最重要技巧
- 卢伟冰视频连线品牌代言人王一博 透露了这一重要信息
- 互联网大数据的师傅,竟然是那些江湖骗子?
- 小身材有大用处,盘点 Gitee 上那些实用的JS小工具