2

Event Wource API と Action コントローラーを使用して基本的な Rails 4 コードを実装しようとしています。すべて問題ありませんが、イベント リスナーに到達できません。

コントローラーコード:

  class HomeController < ApplicationController
            include ActionController::Live
     def tester 
            response.headers["Content-Type"] = "text/event-stream"
            3.times do |n|
            response.stream.write "message: hellow world! \n\n"
            sleep 2
    end
end

JS コード:

var evSource = new EventSource("/home/tester");

evSource.onopen = function (e) {
  console.log("OPEN state \n"+e.data);
};

evSource.addEventListener('message',function(e){
console.log("EventListener .. code..");
},false);

evSource.onerror = function (e) {
   console.log("Error State  \n\n"+e.data);
};

ページをリロードすると、コンソールの出力は"OPEN state" & 次に "Error State"でした。イベント リスナー コードが表示されませんでした。

  1. ページをめくると「メッセージ: Hello world!」。表示していました。

  2. development.rbで変更しました

    config.cache_classes = true
    config.eager_load = true

  3. 私のブラウザはクロムで、ファイアフォックスは最新バージョンなので、問題ありません

どこが行方不明ですか?提案してください!

4

1 に答える 1

1

サーバー送信イベントのイベント形式は次のとおりです。

"data: message text\n\n"

したがって、あなたの場合は次のようになります。

response.stream.write "data: hello world! \n\n"

この MDN ページを参考にしてください。

于 2013-11-21T13:04:29.280 に答える