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

标签 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);

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

提前致谢。 :)

最佳答案

使用类似于请求的 close event 的内容应该可以正常工作:

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);
  });
});

关于javascript - 检测 NodeJS/Express 中的长请求何时结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221000/

相关文章:

javascript - 诗乃js AssertError : expected stub to be called once but was called 0 times

javascript - Express'response.sendFile() 发送未捕获的语法错误 : Unexpected token <

javascript - SharePoint 在跨度后添加中断

javascript - 基于事件的编辑器,如星际争霸 2 编辑器(算法)

javascript - 为什么我不能从 Koa 路由器提供静态文件?

node.js - Mongoose默认排序顺序

node.js - Express 4 session 类型错误 : object is not a function

node.js - 在 Express JS 中为 Ajax 设置 REST 路由,仅与 Backbone 一起使用

javascript - 单页,带有固定动态页脚的滚动站点

javascript - 获取存储在 Redis 中的所有内容并将其发送到模板