gpt4 book ai didi

java - 读取分块响应

转载 作者:行者123 更新时间:2023-12-02 05:25:59 26 4
gpt4 key购买 nike


我正在尝试读取 servlet 中的文件并将其作为分块消息发送(响应)到 jsp,我可以在浏览器中以纯文本形式看到它。
这是我尝试过的:
Servlet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/plain");
response.setHeader("Transfer-Encoding", "chunked");
response.setHeader("Connection", "keep-alive");
//response.flushBuffer();
try (PrintWriter writer = response.getWriter();BufferedReader br = new BufferedReader(new FileReader("/some/file/path.txt"))) {
String line;
while ((line = br.readLine()) != null) {
writer.println(line);
try{Thread.sleep(500);}
catch(InterruptedException e){}
}
}
}

jsp:

<head>
<meta charset="UTF-8">
<title>example</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$.get('/project/trial', function(responseText) {
$('#message').text(responseText);
});
});
</script>
</head>
<body>
<div id="message"></div>
</body>

我需要每 500 毫秒用新行更新页面而不刷新页面,但在读取整个文件后我一次获取整个文件。
难道我做错了什么?我错过了什么吗?
我的jsp正确吗?
我尝试了很多在线资源,但找不到我缺少的内容。
有没有任何示例可以让我获得分块响应读取和写入的支持?

提前致谢。

最佳答案

我认为您在这里实际上想要做的是实现 Comet 的版本,也称为 server pushing 。这可以通过 Ajax 完成,但需要仔细准备。

实现此目的的一种方法是利用 multipart/x-mixed-replace用于向客户端发送更新内容的 MIME 类型。可以找到这样的示例 here (请注意,该示例中使用的边界不符合 MIME,恕我直言。各部分之间的边界应类似于 {$bondary}-- 而最后一个边界应为 {$boundary}<CR><LF> )。然而,这是以 MSIE 功能受损为代价的。

可以在ajaxpatterns.org找到一些替代方案中可比较的实现的列表。 。无论如何,您应该确保您的输出编写器在写出一行后实际上被刷新。

关于java - 读取分块响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26009229/

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