请求标头未设置为Eventsource调用的text / event-stream

时间:2013-02-07 05:54:13

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

我有以下Eventsource。

 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;

2 个答案:

答案 0 :(得分:1)

你为什么不这样做:

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

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

答案 1 :(得分:0)

你不能这样做 浏览器为您设置Accept标头

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