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) {
// ...
});