Ajax在发送响应时从服务器读取响应

Ajax reading response from server as it gets sent

本文关键字:响应 服务器 读取 Ajax      更新时间:2023-10-03

我正在尝试进行一些长时间的轮询,但我很难弄清楚如何在发送数据时从服务器读取数据。

我在客户端上有以下内容:

var xhr = $.ajax('/getData');
setInterval(function(){
    console.log(xhr.responseText);
}, 1000); // reads response each 1s

服务器

app.get('/getData', function(req, res){
  setInterval(function(){
    res.write('hi-' + Math.random()); // write random stuff each 1s
  }, 1000);
});

但是xhr.responseText只有在请求完成时才会被填充。

这样做可能吗?每次我需要什么东西时,我都必须对/getData提出新的请求?我不能利用同样的请求?

请阅读onreadystatechange

http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asphttps://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

$.ajax({
// ...
beforeSend: function (request, settings) {
    $(request).bind("readystatechange", function (e) { alert("changed " + e.target.readyState); });
}});

您需要多次轮询服务器或使用socket.io之类的套接字连接。我建议你读这篇文章。