2

我有以下事件源。

 var source = new EventSource('/events');
    source.onmessage = function(e) {
      document.body.innerHTML += e.data + '<br>';
    };

问题是,Accept 请求标头自动设置为text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8.

在 node.js 中,我正在处理具有以下条件的请求。

if (req.headers.accept && req.headers.accept != 'text/event-stream') {..}

因此,我无法流式传输数据。请让我知道如何在调用 EventSource('/events'); 时将接受请求标头设置为 text/event-stream;

4

2 回答 2

1

你为什么不这样做:

if(req.url == '/events'){
    res.writeHead(200,{'content-type':'text/event-stream'});
    //Your sse code here...
    sendMsg('some data...');
}

它更简单,您不再需要处理请求标头问题。

于 2013-03-09T06:19:40.747 回答
0

你不能这样做浏览器为你设置 Accept header

EventSource 对象在 Chrome、Firefox 和 Opera 检查下使用“text/event-stream”接受标头发出请求,表明您正在处理正确的请求

于 2013-02-07T10:22:32.077 回答