3

我有一个带有 while (true) 的 JSP,其中数据被发送到浏览器。

while (true) {
    out.print("pushing some data to browser");
    out.flush();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
}

它大部分时间都可以工作,但很少会以 1 秒的间隔将数据发送到浏览器。

而不是排队并同时抛出所有数据。

4

2 回答 2

0

尝试添加

response.setBufferSize(0);

在代码块的开头。默认情况下,响应总是被缓冲。您可以添加此行以禁用缓冲区。

于 2013-03-09T15:30:49.633 回答
0

Roman C 是对的,它不会像发布的那样编译。但如果你修复它,你会发现它在 Firefox 和 Chrome 中确实有效。但是,IE 不同。它一直等到获得大量文本才开始渲染。

IE needs some text here. zzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzz
zzzzzz I guess this enough for IE to start to render now.
<%
  int x = 0;
  while (x < 10) {
     out.print("pushing some data to browser");
     out.flush();
     try {
          Thread.sleep(1000);
     } catch (InterruptedException e) {
  }
  x++;
}
%>
于 2013-03-09T16:26:07.443 回答