java 怎么实现http1.1中规定的pipeline的长连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 怎么实现http1.1中规定的pipeline的长连接相关的知识,希望对你有一定的参考价值。

参考技术A 目前web上的消息通讯方式主要有以下几种。
轮询,长连接,websocket
轮询:隔一段时间访问服务器,服务器不管有没有新消息都立刻返回。
长连接:页面向服务器发出请求,由服务器决定什么时候返回。(如果有新消息则立刻返回,没有的话就保持连接,直到有新消息才返回)
websocket:类似Java Socket,由Http请求模拟实现的socket。

要实现长连接的关键就是: 由服务器端决定什么时候返回数据。比如在servlet中。

doGet(...)
...
Thread.sleep(30000);
return ...

这就是一个长连接的例子,只是没有任何意义而已。

你要做的就是在doGet中阻塞住,
while(!hasNewMsg)
sleep(500)

return newMsg...

当然你的ajax超时时间要设置长一点。

如果可以的话,最好可以使用websocket。本回答被提问者和网友采纳

以上是关于java 怎么实现http1.1中规定的pipeline的长连接的主要内容,如果未能解决你的问题,请参考以下文章

RFC2616-HTTP1.1-Methods(方法规定部分—译文)

RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—单词注释版)

HTTP1.0和HTTP1.1的区别

http2和http1.1的性能差异对比

Http1.0和Http1.1的主要区别

http协议版本和java返回值讨论