【问题标题】:Servlet 3: Async - cant PUSH partial responseServlet 3:异步 - 无法推送部分响应
【发布时间】:2013-01-10 14:14:06
【问题描述】:

我使用的是 Tomcat 7。当我的异步 servlet 尝试以不同的时间间隔推送部分响应客户端时,它不起作用。只有在整个响应准备好后才会刷新响应。

如何推送部分响应?

这是我的代码

@WebServlet(urlPatterns={"/home"} , name="asynch", asyncSupported=true)
public class CometServlet extends HttpServlet {

    public void doGet(final HttpServletRequest request, final HttpServletResponse response) throws IOException, ServletException
    {
        final  AsyncContext ac = request.startAsync();
        new MyThread(ac).start();
    }
}

MyThread 的作用是定期将 1 到 10 的数字写入响应对象。

class MyThread extends Thread
{
    AsyncContext ac;
    public MyThread( AsyncContext ac ) {
        this.ac = ac;
    }

    public void run()
    {
        int i =2 ; 
        while( i < 10 )
        {
            try
            {
            ac.getResponse().getWriter().print(i + "\n" );
            ac.getResponse().getWriter().flush();
            ac.getResponse().flushBuffer();
            Thread.sleep(1000);
            }
            catch (Exception e) {
                System.out.println("ccttt " + e);
            }
            i++;
        }
        ac.complete();
    }
}

以及请求servlet的页面

<script type="text/javascript">
function show()
{
var xml = new XMLHttpRequest();
xml.open("GET", "http://localhost:8080/Comet/home", true );
xml.onreadystatechange=function()
{
    if (xml.readyState== 3|| xml.readyState == 4 ) {
    document.getElementById("dynamicContent").innerHTML=xml.responseText;
    }
}
xml.send(null);
}
</script>

<input type="button" value="show" onclick="show()"/> 
<div id="dynamicContent"> </div>

大约 10 秒后,我在浏览器上看到了完整的响应。但我想每秒看到部分输出。

我只想学习如何使用 Servlet 3 API 推送部分响应。

有人可以回答这个问题吗?

【问题讨论】:

  • 你解决了吗?我也有同样的问题!!
  • @NobVenoda 不!!。你解决问题了吗?

标签: java servlets jakarta-ee push servlet-3.0


【解决方案1】:

请参阅my answer 了解另一个问题中提到的完全相同的问题。 如果您在按照该答案中的说明操作后仍然遇到此问题,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多