gpt4 book ai didi

java - Servlet 3.0中的AsyncContext无限浏览器加载

转载 作者:太空宇宙 更新时间:2023-11-04 08:15:34 24 4
gpt4 key购买 nike

我要制作流媒体。我有 .jsp 文件,在 .jsp 文件末尾,我使用以下代码包含我的异步 Servlet:

<jsp:include page = '/simple' flush = 'true' />

所以我希望当整个页面加载时打开一个无限的异步请求,它将处理异步响应。

这是我的 Servlet 代码:

public class SimpleAsyncServlet extends HttpServlet {
public static AsyncContext ctx;
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);
ctx = req.startAsync();
ctx.setTimeout(0);
}
}

在其他 java 类中,我使用静态 SimpleAsyncServlet.ctx.getResponse.getWriter() 将一些 javascript 代码打印到当前页面。它工作没有任何问题,但浏览器不断显示它正在加载。根据异步想法,页面应该被加载,并且这个异步请求应该在后台保持 Activity 状态......就是这样,但是不......浏览器会一直加载页面直到永远(超时为0,因为我想要无限的打开请求)

我哪里错了,如何在不加载此浏览器的情况下发出此永久请求?

附注我尝试直接从 url (localhost.../simple) 访问我的 servlet,然后我在页面上看不到任何内容。它会一直加载直到永远。

最佳答案

您正试图实现不可能的目标。

浏览器将显示页面正在加载,直到它知道已通过以下方法之一收到完整请求:

  • 它已收到 Content-Length header 中指定的字节数
  • 连接已关闭
  • 使用分块编码时收到一个结束 block

由于您想要“无限”响应,因此上述三个选项都不会发生。

关于java - Servlet 3.0中的AsyncContext无限浏览器加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com