Websocket学习笔记

1、Websockt 是HTML5出的持久化的协议,HTML是指一系列新的规范、新技术。
2、HTTP是不支持持久连接的(长连接,循环连接不算)
3、HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了。
4、在HTTP1.1中进行了改进,使得有一个keep-alive,也就是说,在一个HTTP连接中,可以发送多个Request,接收多个Response。
5、首先我们来看个典型的 Websocket 握手(借用Wikipedia的。。)
请求:

GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket    **-----让Apache 、 Nginx 等服务器知道是Websocket协议**
Connection: Upgrade  **-----让Apache 、 Nginx 等服务器知道是Websocket协议**
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==   **-----Base64 encode 浏览器随机生成,验证是否真的Websocket助理**
Sec-WebSocket-Protocol: chat, superchat   **----是一个用户定义的字符串,用来区分同URL下,不同的服务所需要的协议**
Sec-WebSocket-Version: 13   **----告诉服务器所使用的 Websocket Draft (协议版本)**
Origin: http://example.com

服务器返回:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket   **----依然是固定的,告诉客户端即将升级的是 Websocket 协议,而不是mozillasocket,lurnarsocket或者shitsocket。**
Connection: Upgrade   **---依然是固定的,告诉客户端即将升级的是 Websocket 协议,而不是mozillasocket,lurnarsocket或者shitsocket。**
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=   **---经过服务器确认,并且加密过后的 Sec-WebSocket-Key 。**
Sec-WebSocket-Protocol: chat   **---表示最终使用的协议**

6、ajax轮询
ajax轮询的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。
每次进行一次Request请求,已经得到一个Response 进行多次

7、long poll
long poll 其实原理跟 ajax轮询 差不多,都是采用轮询的方式,不过采取的是阻塞模型。(一直打电话,没收到就不挂电话)。
每次进行一次Request请求,如果没有消息那么一直阻塞不会返回Respone ,直到有就返回,而客户端接收后再次进行Request请求

8、Ajax轮询与Long poll 共同点都是只能是客户端主动联系服务端,而服务端不能主动联系客户端,两种都是非常消耗资源的。ajax轮询 需要服务器有很快的处理速度和资源。Long poll 需要很高的并发。而且同步可能有延迟。

9、程序都是要经过两层代理,分别是解析HTTP协议的Nginx等服务器,和对应的Handler(PHP等),而消耗资源问题一般是因为Handler处理的速度慢。而Websocket解决消耗资源问题是因为他能建立持久连接,有消息就主动返回。

10、传统的方式上,要不断的建立,关闭HTTP协议,由于HTTP是非状态性的,每次都要重新传输 identity info (鉴别信息),来告诉服务端你的身份,这样以来服务器的处理效率也就下降。

11、Websocket只需要一次HTTP握手,所以说整个通讯过程是建立在一次连接/状态中,也就避免了HTTP的非状态性,服务端会一直知道你的信息,直到你关闭请求,这样就解决了接线员要反复解析HTTP协议,还要查看identity info的信息。

12、不是所有的客户端上都支持Websocket,这样只能使用Long poll 和Ajax轮询来实现类是的功能。

学习知乎上的文章得到的笔记 http://www.zhihu.com/question/20215561

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值