检测 NodeJS / Express 中的长请求何时结束

hey*_*rne 1 javascript node.js express server-sent-events

我目前正在处理服务器发送的事件,我的伪代码如下所示:

var listeners = [];
app.get('/stream', function (req, res) {
    listeners.push({ req: req, res: res });
});

// ... something happens
notify(listeners);
Run Code Online (Sandbox Code Playgroud)

现在这实际上工作得很好,但是我如何知道客户端何时关闭浏览器窗口,这样我最终就不会耗尽内存?我是否必须管理这个客户端,或者是否有一些req.on('close', fn);我找不到?

提前致谢。:)

msc*_*dex 5

使用请求close事件之类的东西应该可以正常工作:

var listeners = [];

app.get('/stream', function (req, res) {
  var listener = { req: req, res: res };
  listeners.push(listener);
  req.on('close', function() {
    listeners.splice(listeners.indexOf(listener), 1);
  });
});
Run Code Online (Sandbox Code Playgroud)