特定の機能のストリーミングアップデートで強化したいSinatraWebアプリがあります。ただし、現在は、これまでに行ったことのないストリーミングデータの使用方法を学習しようとしています。私は次の簡単なテストコードを持っています:
シナトラでは:
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、またはその他の手段を使用)で、すべてが収集されるまでブロックして一度に吐き出すのではなく、提供されたとおりにストリーミングデータをプルするにはどうすればよいですか?