Tag: server sent events

SSE(服务器发送的事件)无法正常工作

我正在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”} 所以应该发回数据…… 这可能是什么问题? 更新 :问题是这个猴子补丁解决了来自问题的render_to_string问题: ActionController :: Live与SSE无法正常工作 “这似乎只能解决问题…虽然它会导致控制器实际发送数据,但由于某种原因,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 […]

处理Sinatra应用程序中的事件流连接

有一个使用 Konstantin Haase的服务器发送事件的聊天应用程序的一个很好的例子 。 我试图运行它并遇到回调问题(我使用Sinatra 1.3.2并使用Chrome 16浏览)。 它们根本不运行(例如在页面重新加载之后),因此连接数量正在增长。 此外,连接在30-60秒内关闭,除非设置定期计时器以发送空数据,如康斯坦丁在其他地方所建议的那样。 你能复制一下吗? 如果是,是否有可能以某种方式解决这些问题? WebSockets在这方面无缝工作…… # ruby get ‘/stream’, provides: ‘text/event-stream’ do stream :keep_open do |out| EventMachine::PeriodicTimer.new(20) { out << "data: \n\n" } # added settings.connections << out puts settings.connections.count # added out.callback { puts 'closed'; settings.connections.delete(out) } # modified end end # javascript var es = new […]