SSE(服务器发送的事件)不起作用

时间:2013-11-10 13:29:33

标签: ruby-on-rails html5 server-sent-events

我正在Chrome中的Rails应用程序(服务器:Puma)中测试SSE,但它们没有被触发:

setTimeout((function() {
  console.log("log1");
  var source = new EventSource('/websites/21/backlinks/realtime_push');
  source.addEventListener('pagination', function(e) {          
    console.log("log2");
    var data = JSON.parse(e.data);
    $('#pagination').html(data.html);
  });
}), 1);

只有“log1”被写入控制台。

在开发人员工具中,每次服务器推送内容(每秒)时都会看到XHR请求,但响应是空的 - 不确定开发人员工具是否显示它或其他错误。

curl http://localhost:3000/websites/21/backlinks/realtime_push

返回:

event: pagination
data: {"html":"pagination"}

event: pagination
data: {"html":"pagination"}

所以应该发回数据......

这可能是什么问题?

UPDATE :问题是这个问题是针对render_to_string问题的猴子补丁:ActionController::Live with SSE not working properly

“这似乎只能解决问题......虽然它会导致控制器实际发送数据,但由于某些原因,JavaScript中的接收端仍然不会收到事件通知”

这很奇怪,因为在我使用render_to_string的情况下,当我不使用时,我得到了与curl相同的标题:

HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Content-Type: text/event-stream
Cache-Control: no-cache
X-Request-Id: 4de7c8a6-a54f-45ef-9013-0447f85438c2
X-Runtime: 0.033030
Transfer-Encoding: chunked

但在一个案例中,它适用于JavaScript方面,而在其他情况下则不适用:/

0 个答案:

没有答案
相关问题