risposta multipart in Ruby / Rack
Domanda
Voglio il mio server di inviare una risposta multipart (/ multipart x-mixed-replace). Preferirei un qualche tipo di soluzione con il quadro Sinatra o di un rack un'applicazione generica, ma qualche esempio in Ruby sarebbe bello. Ecco l'equivalente di quello che sto cercando di fare, 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";
?>
Soluzione
Probabilmente si può utilizzare il metodo out.flush per questo:
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
Tuttavia, tenere presente che se si sta utilizzando Mongrel per servire il vostro codice Ruby (come molte persone che utilizzano RoR fanno), non sarà in grado di trasmettere a tutti.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow