Http长连接和管线化 Servlet NIO

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pk_sir/article/details/76213480

我好像上了个假的网络!
网上对http长连接和管线化技术没有比较详细的说明。一下我这里也只是对这些概念做一个说明,具体代码后期
http长连接

  HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;他的好处:
  1,同一个客户端可以使用这个长连接处理其他求情,避免http重新链接和断开所消耗的时间。
  2,服务器可以利用这个连接 主动推送 消息到客户端(这个才是我想要的)。
  HTTP头部有了Keep-Alive这个值,代表客户端这次请求期望是长连接的。但是并不代表一定会使用长连接,服务器端都可以无视这个值,也就是不按标准来。这里需要后台服务器支持这个标准。

管线化

也可以理解为流水线。在长连接的基础上,将客户端的其他请求都交给这一个连接去处理。这里服务器需要注意一件事情。那就是这个请求的先后顺序是不能颠倒的

Servlet NIO


这个是servlet3.0 以后的功能,目前已经到4.x了。
非阻塞IO操作。
阻塞IO的servlet 每处理一次请求需要一个线程。
非阻塞IO操作可以在servlet的中利用ReadListener,WriteListener,可以实现非阻塞操作
点这里

题外话3次握手和4次挥手

猜你喜欢

转载自blog.csdn.net/pk_sir/article/details/76213480