HTTP协议
1. 非持久协议
- HTTP的生命周期通过Request来界定,也就是一个Request 一个Response,那么在HTTP1.0中,这次HTTP请求就结束了。
- 在HTTP1.1中,有一个keep-alive,即,在一个HTTP连接中,可以发送多个Request,接收多个Response
- 总的来说,在HTTP中永远是一个request只能有一个response。
2. 被动性
- response是被动的,不能主动发起。即,服务端无法主动推送信息给客户端。
3. 无状态性
- 通俗的说就是,服务器因为每天要接待太多客户了,是个健忘鬼,你一挂电话,他就把你的东西全忘光了,把你的东西全丢掉了。你第二次还得再告诉服务器一遍。
WebSocket
1. 与HTTP的关系
- WebSocket与HTTP都是协议,关系如下:
2. 实现实时信息传递的方式
- ajax轮询
- long poll
- WebSocket
3. ajax轮询
- 原理:让浏览器每隔几秒发送一次请求,询问服务器是否有新信息。
- 缺点:需要服务器有很快的处理速度和资源。(速度)
4. long poll,又叫长连接或长轮询
- 原理:采取阻塞模型(一直打电话,没收到就不挂电话),即,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。
- 缺点:需要有很高的并发,也就是说同时接待客户的能力。(场地大小)
5. WebSocket
- 解决了HTTP的被动性,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端。
- 做到了只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。