服务器端事件(SSE)没有到达客户端

我正在使用MEAN,我试图从服务器端接收事件。 为此,我使用EventSource,但它不工作。

我看到连接是如何打开的,但是我没有收到来自服务器的消息。 我可以看到在节点控制台如何发送消息,但在客户端没有什么(浏览器控制台)。

我有点迷路,因为我按照我find的所有教程,但使用完全相同的代码,它不工作。

在客户端,这是我的AngularJS代码:

var source = new EventSource('/api/payments/listen'); source.addEventListener('open', function(e) { console.log('CONNECTION ESTABLISHED'); }, false); source.addEventListener('message', function (e) { $scope.$apply(function () { console.log('NOTIFICATION'); console.log(e.data); }); }, false); source.onmessage = function (e) { console.log('NOTIFICATION!'); console.log(e); }; source.addEventListener('error', function(e) { if (e.readyState === EventSource.CLOSED) { console.log('CONNECTION CLOSED'); } }, false); 

服务器端代码:

 exports.listen = function (req, res) { if (req.headers.accept && req.headers.accept === 'text/event-stream') { if ( req.url === '/api/payments/listen' ) { sendSSE(req, res); } else { res.writeHead(404); res.end(); } } else res.end(); }; function sendSSE(req, res) { res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' }); var id = (new Date()).toLocaleTimeString(); // Sends a SSE every 5 seconds on a single connection. setInterval(function() { constructSSE(res, id, data); }, 5000); constructSSE(res, id, data); } function constructSSE(res, id, data) { res.write('id: ' + id + '\n'); res.write('data: ' + JSON.stringify(data) + '\n\n'); } 

任何build议? 任何小费?

编辑

我不知道是什么导致了这个问题,但我已经得到它使用Simple-SSE,一个有用的和小的库服务器端事件。

现在,它正在按预期工作。

这里是那些想要尝试的链接: https : //github.com/Lesterpig/simple-sse

谢谢=)