无法使服务器端事件与nodejs和expressjs一起使用

时间:2016-03-23 09:19:20

标签: node.js express server-sent-events

我无法让SSE在我的nodejs / express aplication上工作。我有这些代码:

app.get('/sse', function (pedido, resposta) {
   resposta.writeHead(200, {
    'Content-Type': 'text/event-stream',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive'
  });
  resposta.write('\n');
  global.res = resposta;
  setInterval(function () {
    var d = new Date();
    global.res.write('id: ' + d.getMilliseconds() + '\n');
    global.res.write('data:' + new Date() + '\n\n'); 
  }, 5000);
});

在客户端:

//...
var source = new EventSource('/sse');
source.onmessage = function (event) {
 document.getElementById("r").innerHTML = event.data;
};
//...

但它不起作用。在客户端浏览器上,它看起来是EvenetSource,但它会发生超时。在服务器上,如果我插入console.logs(每个地方),我可以看到它正在工作。有些东西不见了,我不明白为什么。谁能帮我?谢谢。

1 个答案:

答案 0 :(得分:2)

我失踪了:

setInterval(function () {
    var d = new Date();
    global.res.write('id: ' + d.getMilliseconds() + '\n');
    global.res.write('data:' + new Date() + '\n\n'); 
}, 5000);setInterval(function () {
    var d = new Date();
    global.res.write('id: ' + d.getMilliseconds() + '\n');
    global.res.write('data:' + new Date() + '\n\n'); 
    resposta.end(); // was missing this
}, 5000);

谢谢Code Uniquely