【问题标题】:How to cancel a stream if browser cancels his request ? Which event如果浏览器取消他的请求,如何取消流?哪个事件
【发布时间】:2015-05-09 06:20:37
【问题描述】:

在我的浏览器中,我显示了很多拇指。如果拇指不可见(在视口之外),我将 src 设置为 ''(空字符串)。当它在视口中时,我设置了正确的 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);
};

要听什么事件?

注意:我使用的是 express,但应该没有区别。

干杯!

【问题讨论】:

    标签: node.js stream request


    【解决方案1】:

    有类似的问题,答案是:

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

    【讨论】:

    • 您好。 ?? 如果你能解释一下为什么这是他们问题的答案,那会更有帮助。
    猜你喜欢
    • 2020-07-28
    • 2014-02-20
    • 2022-11-12
    • 2021-03-19
    • 2016-10-23
    • 2014-04-05
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多