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'); の呼び出し時に、accept リクエスト ヘッダーを 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 ヘッダーを設定します

EventSource オブジェクトは、Chrome、Firefox、Opera で「text/event-stream」accept ヘッダーを使用してリクエストを作成し、正しいリクエストを処理していることを確認します

于 2013-02-07T10:22:32.077 に答える