heroku http streaming (sse) putuskan koneksi tidak terdeteksi dengan express.js

Heroku tidak mendeteksi ketika klien terputus.

Saya mengkloning aplikasi starter mereka dan menambahkan beberapa baris untuk 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");
    });
 });

Saat saya membuka aplikasi saya, saya melihat respons yang benar:

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

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

Namun setelah saya menutup tab browser heroku tidak mendaftar seperti yang saya lakukan.

Dengan heroku logs -t Saya terus mencetak tanggalnya dan tidak pernah cleared

Ini berfungsi secara lokal dengan foreman start tetapi tidak di heroku.

Adakah yang tahu apa yang saya lakukan salah?


person dylntrnr    schedule 05.01.2014    source sumber


Jawaban (1)


Berdasarkan dokumentasi untuk modul node connect-sse, sepertinya Anda harus mengacu pada sse middleware tanpa tanda kurung, seperti:

app.get('/testing', sse, function(req, res, next) {
  // ...
});
person Zeke    schedule 06.01.2014
comment
terima kasih atas tanggapannya. Saya membuat perubahan itu tetapi saya melihat hal yang sama di heroku. Ini berfungsi secara lokal dengan foreman start, tetapi tidak pada heroku. - person dylntrnr; 07.01.2014