Mehrteiliger Antwort in Ruby / Rack-
Frage
Ich möchte mein Server eine mehrteilige Antwort (multipart / x-mixed-replace) zu senden. Ich würde eine Art von Lösung vorziehen, den Sinatra Rahmen oder einen generischen Rack-App, aber jedes Beispiel in Ruby verwenden wäre schön. Hier ist das Äquivalent von dem, was ich versuche zu tun, in PHP:
<?php
header('Content-type: multipart/x-mixed-replace;boundary="rn9012"');
print "--rn9012\n";
print "Content-type: application/xml\n\n";
print "<?xml version='1.0'?>\n";
print "<content>First Part</content>\n";
print "--rn9012\n";
flush();
sleep(5);
print "Content-type: application/xml\n\n";
print "<?xml version='1.0'?>\n";
print "<content>Second Part</content>\n";
print "--rn9012--\n";
?>
Lösung
Sie können sich wahrscheinlich die out.flush Methode für diese verwenden:
class TestController < ApplicationController
def index
render :text => lambda { |resp, out|
out.puts 'start'
out.flush
10.times do
out.puts '.'
out.flush
sleep 1
end
out.puts 'done'
}
end
end
Allerdings, denken Sie daran, dass, wenn Sie Mongrel verwenden Ihren Ruby-Code zu dienen (so viele Menschen mit RoR tun), werden Sie nicht in der Lage sein, überhaupt zu streamen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow