我有一个 Sinatra 网络应用程序,我非常想通过流式更新来增强某些功能。不过,现在,我只是想了解如何使用流数据,这是我以前从未做过的。我有以下简单的测试代码:
在西纳特拉:
get '/foo' do
stream do |out|
10.times do
out.puts "foo"
out.flush
sleep 1
end
end
end
get '/bar' do
erb :bar
end
在bar.erb
:
<body>
<div class="stream">
nothing.
</div>
</body>
<script type="text/javascript" charset="utf-8">
$(document).ready( function() {
$.get('/foo', function(html) {
$(".stream").html(html);
});
});
</script>
我并不感到惊讶,这并没有达到我想要的效果,即在编写每个 'foo' 并动态更新页面时获取它。相反,大约 10 秒内什么都没有发生,然后我得到foo foo foo foo foo foo foo foo foo foo foo
.
我的问题是,如何在 ERB 模板(使用 Ruby、jQuery 或其他方式)中提取提供的流数据,而不是阻塞直到它全部收集并一次全部吐出?