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. 当我卷曲页面时,“消息:Hellow world!” 正在显示。

  2. 我改变了 development.rb

    config.cache_classes = true
    config.eager_load = true

  3. 我的浏览器是 chrome,firefox 是最新版本,所以没有问题

我在哪里失踪?请提出建议!

4

1 回答 1

1

服务器发送事件的事件格式是

"data: message text\n\n"

所以,在你的情况下,它应该是这样的:

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

检查此 MDN 页面以供参考。

于 2013-11-21T13:04:29.280 回答