我正在实现HTTP流媒体servlet以向客户端传递推送通知。在该容器中还有Jersey JAX-RS REST服务。在HTTP中为每个请求实现线程流媒体服务器
问题是当我在两个浏览器窗口中打开流时,我必须等到另一个请求完成。
我看过类似的主题 Servlet seems to handle multiple concurrent browser requests synchronously并在两个不同的浏览器中打开了流并获得了它的工作。
我尝试使用AsyncContext,但它不是流,它允许同时打开浏览器选项卡,并在执行结束时将所有内容传递给浏览器。
此外,我试图在两个浏览器选项卡中同时打开示例JSP页面,并得到相似的结果。
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache">
</HEAD>
<BODY BGCOLOR="blue" TEXT="white">
<%
try {
for (int i=1; i < 100; i++) {
out.print("<h1>"+i+"</h1>");
out.flush();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
out.print("<h1>"+e+"</h1>");
}
}
} catch (Exception e) {
out.print("<h1>"+e+"</h1>");
}
out.print("<h1>DONE</h1>");
%>
</BODY>
</HTML>
作为服务器我使用Apache Tomcat 7.0。但使用另一个servlet容器不会成为问题。
任何指针?
感谢
是否因为Thread.sleep()会停止整个Servlet线程? – JustinKSU