在我的servlet中,我设置了以下内容,每隔一秒我就会将数据刷新到响应的输出流
response.setContentType("text/html");
response.addHeader("Connection", "Keep-Alive");
response.addHeader("Transfer-Encoding", "chunked");
while(true){
Thread.sleep(1000);
resOut.write(hello);
resOut.flush();
}
在我的客户端javascript我有ajax
xmlhttp.onprogress = function() {
alert(xmlhttp.responseText);
}
浏览器正在接收已刷新的数据并且警报正在触发,但我面临的问题是,响应文件太大了而不是块,如果我尝试将reponseType设置为arrybuffer或blob等,则在xmlhttp上对象,我看到null,直到响应流按预期从服务器关闭。
那么如何在中间阶段清除responseText(仅限_read)或者能够在连接打开时使用arraybuffer和接收块来使html页面上的数据可用?
答案 0 :(得分:0)
据我所知,这就是HTTP协议的工作原理。在完成所有操作之前,您将无法读取响应(或其中的块)。
您有2个解决方法:
此处可能有3个,但取决于您使用的服务器语言。我是.NET开发人员,我只知道SignalR。