在我的 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);
}
浏览器正在接收刷新的数据并且警报正在触发,但我面临的问题是 responseText 出来的对象太大而不是 block ,如果我尝试在 xmlhttp 对象上将 reponseType 设置为 arrybuffer 或 blob 等,我我看到 null 直到响应流按预期从服务器关闭。
那么如何在中间阶段清除 responseText(_read only) 或者能够使用 arraybuffer 并接收 block 来使数据在连接打开时在 html 页面上可用?
最佳答案
据我所知,这就是 HTTP 协议(protocol)的工作方式。在一切完成之前,您将无法读取响应(或其中的 block )。
您有两种解决方法:
这里可能有 3,但取决于您使用的服务器语言。我是 .NET 开发人员,我只知道 SignalR。
关于javascript - 如何在连接打开时清除 xml http (xhr) 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27479296/