Osheep

时光不回头,当下最重要。

WebSocket 是什么原理?为什么可以实现持久连接?(笔记)


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都是协议,关系如下:
《WebSocket 是什么原理?为什么可以实现持久连接?(笔记)》

WebSocket与HTTP的关系
2. 实现实时信息传递的方式
  • ajax轮询
  • long poll
  • WebSocket
3. ajax轮询
  • 原理:让浏览器每隔几秒发送一次请求,询问服务器是否有新信息。
  • 缺点:需要服务器有很快的处理速度和资源。(速度)
4. long poll,又叫长连接或长轮询
  • 原理:采取阻塞模型(一直打电话,没收到就不挂电话),即,客户端发起连接后,如果没消息,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。
  • 缺点:需要有很高的并发,也就是说同时接待客户的能力。(场地大小)
5. WebSocket
  • 解决了HTTP的被动性,当服务器完成协议升级后(HTTP->Websocket),服务端就可以主动推送信息给客户端。
  • 做到了只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。

点赞