Express.js未检测到 Heroku HTTP 流式处理 (SSE) 断开连接



Heroku 不会检测到客户端何时断开连接。

我克隆了他们的入门应用程序并为 sse 添加了几行:

var sse = require('connect-sse')();
app.get('/testing', sse, function(req, res, next) {
    var interval;
    interval = setInterval(function() {
      var date;
      date = new Date();
      res.json({
        ping: date
      });
      return console.log(date);
    }, 2000);
    return req.on('close', function() {
      clearInterval(interval);
      return console.log("cleared");
    });
 });

当我转到我的应用程序时,我看到正确的响应:

id: 0
data: {"ping":"2014-01-05T23:53:49.835Z"}
id: 1
data: {"ping":"2014-01-05T23:53:51.839Z"}

但是在我关闭浏览器选项卡后,heroku 没有注册我所做的。

有了heroku logs -t,我不断打印日期,从不cleared

这在本地适用于foreman start,但不适用于 heroku。

有人知道我做错了什么吗?

根据 connect-sse 节点模块的文档,看起来您应该引用不带括号的sse中间件,如下所示:

app.get('/testing', sse, function(req, res, next) {
  // ...
});

最新更新