第9章 基于HTTP的功能追加协议
2017-04-20 16:37
459 查看
HTTP协议的瓶颈
为了让用户及时看到最新的消息,服务端一有更新就需要直接反馈到客户端,若想实现,那么HTTP标准则会成为瓶颈!
请求只能从客户端发出,服务端不可以接受响应以外的指令。
请求/响应未经过压缩就直接发送,头部信息越多延迟越大。
发送冗长的头部,每次相同的头部造成的浪费较多。
可任意选择压缩格式。不强制压缩。
WebSocket 功能
推送
服务端可以主动推送数据给客户端
减少通信量
只要建立起WebSocket通信,便一直保持连接减少了不必要的开销。另外头部相对于HTTP头部来说小很多。
为了实现WebSocket通信,在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字段的值生成的。
相关文章推荐
- 第9章 基于HTTP的功能追加协议
- 《图解HTTP》读书笔记(9)第9章基于HTTP的功能追加协议(关键词:HTTP/)
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- 图解HTTP笔记(九)-基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP详解--基于HTTP的功能追加协议
- HTTP学习笔记11 基于HTTP的追加协议
- 基于http的追加协议、构建web内容的技术、web的攻击技术(9,10,11)