第9章 基于HTTP的功能追加协议
来源:互联网 发布:linux x86 arm 编辑:程序博客网 时间:2024/06/01 20:20
HTTP协议的瓶颈
为了让用户及时看到最新的消息,服务端一有更新就需要直接反馈到客户端,若想实现,那么HTTP标准则会成为瓶颈!
HTTP协议的瓶颈
- 一次连接只能发送一条请求。
- 请求只能从客户端发出,服务端不可以接受响应以外的指令。
- 请求/响应未经过压缩就直接发送,头部信息越多延迟越大。
- 发送冗长的头部,每次相同的头部造成的浪费较多。
- 可任意选择压缩格式。不强制压缩。
Ajax的解决办法
Ajax只请求部分内容,响应中传输的数据会因此减少,但是实时的获取内容依旧会产生大量的请求,所以Ajax实质上并没有解决HTTP协议的瓶颈问题。
Comet的解决办法
Comet发送请求之后会先将响应挂起,等服务端有更新之后在返回响应。这是一种通过延迟应答来实现服务端向客户端推送内容的策略(`server push`)。但是客户端为了维持连接会消耗更多的资源,所以Comet也没有解决HTTP协议的瓶颈问题。
使用浏览器进行双工通信的WebSocket
WebSocket技术是为了解决
Ajax
和Comet
里XMLHttpRequest
隐患带来的问题而产生的。
WebSocket 协议
一旦服务端与服务端建立起`WebSocket`协议的通信,之后一切的通信都依靠这个专用的协议进行。通信过程中可以发送JSON、XML、HTML或图片等任意格式的数据
WebSocket 功能
- 推送
服务端可以主动推送数据给客户端 - 减少通信量
只要建立起WebSocket通信,便一直保持连接减少了不必要的开销。另外头部相对于HTTP头部来说小很多。
为了实现WebSocket通信,在HTTP建立连接之后需要进行一次握手(HandShaking
)。
握手-请求
- 需要在
Upgrade
头部字段中声明WebSocket
告知服务器协议发生变化。 Sec-WebSocket-Key
记录着握手过程中必不可少的键值。Sec-WebSocket-Protocol
记录使用的子协议。
子协议按WebSocket
协议标准在连接分开使用时,定义哪些连接的名称。
握手-响应
- 对于之前的响应返回101(
Switching Protocol
)响应。 Sec-WebSocket-Accpet
是由请求头中的Sec-WebSocket-key
字段的值生成的。
0 0
- 第9章 基于HTTP的功能追加协议
- 《图解HTTP》读书笔记(9)第9章基于HTTP的功能追加协议(关键词:HTTP/)
- HTTP详解--基于HTTP的功能追加协议
- 【图解HTTP笔记】第九章 基于HTTP功能的追加协议
- 56. 基于 HTTP 追加协议
- 基于Http协议的多线程断点下载功能
- 第2章 简单的HTTP协议(1) HTTP协议
- 基于HTTP的QQ协议
- 基于HTTP的流媒体协议
- 基于HTTP的流媒体协议
- 基于HTTP协议的断点续传
- Servlet-基于的HTTP协议
- 图解HTTP协议 第2章 简单的HTTP协议学习笔记
- 第2章 简单的HTTP协议(2) 总结
- 图解HTTP协议 第3章 HTTP报文内的HTTP信息学习笔记
- 《图解HTTP》读书笔记(2)第2章简单的HTTP协议(关键词:HTTP/)
- 基于http协议的在线升级系统
- 基于Http协议的Java隧道通讯
- WEB消息提醒实现之二 实现方式-websocket实现方式
- bzoj 1095: [ZJOI2007]Hide 捉迷藏 动态树分治+堆
- android studio 卡死新坑
- eclipse新建maven多模块工程
- JPA高级映射
- 第9章 基于HTTP的功能追加协议
- java并发包顶层AQS(抽象的队列式的同步器)分析,结合ReentrantLock分析(源码分析)
- 控制 Memory 和 CPU 资源的使用
- 关于caffe2
- Python基础入门(十七)-函数里的参数
- ionic3/ionic2 配置 用ios/android样式
- 【Linux】Linux中Swap与Memory内存简单介绍
- (4.6.23.1)Android之面向切面编程:AOP 与 Aspect简介
- Nginx环境ssl配置+手动生成证书