如果浏览器取消他的请求,如何取消流?哪个事件

时间:2015-05-09 06:20:37

标签: node.js stream request

在我的浏览器中,我显示了很多拇指。如果拇指不可见(在视口外),我将src设置为'' (空字符串)。当它在viewPort中时,我设置了正确的src。

如果用户使用滚动条,则浏览器会取消尚未下载的拇指下载。

但是在服务器端,一些请求变成了僵尸'并且可以填充套接字池(maxSockets)。超时后,服务器将终止这些套接字并重新启动未下载的一堆拇指。

所以我需要检测浏览器是否取消了请求才能结束响应。我尝试了许多事件,没有结果。

function(req, res) {
  var stream;
  stream = getThumb(req.file.binary.thumb);
  req.on('close', function() {
    return console.log("reQ.on close");
  });
  req.connection.on('close', function() {
    return console.log('reQ.connection.on close');
  });
  req.on('end', function() {
    return console.log('reQ.on end');
  });
  res.on('close', function() {
    return console.log("reS.on close");
  });
  res.connection.on('close', function() {
    return console.log('reS.connection.on close');
  });
  res.on('end', function() {
    return console.log('reS.on end');
  });
  stream.on('close', function() {
    return console.log('stream.on close');
  });
  return stream.pipe(res);
};

听什么事?

注意:我正在使用快递,但它没有任何区别。

欢呼!

1 个答案:

答案 0 :(得分:-1)

有类似的问题,答案是:

req.connection.on('close', function() {
   stream.destroy();
});