Составной ответ в Ruby /Rack
Вопрос
Я хочу, чтобы мой сервер отправил составной ответ (multipart / x-mixed-replace).Я бы предпочел какое-нибудь решение, использующее Sinatra framework или универсальное приложение Rack, но любой пример на ruby был бы хорош.Вот эквивалент того, что я пытаюсь сделать, в 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";
?>
Решение
Вероятно, вы можете использовать для этого метод out.flush:
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
Однако имейте в виду, что если вы используете Mongrel для обслуживания своего Ruby-кода (как это делают многие люди, использующие RoR), вы вообще не сможете выполнять потоковую передачу.
Не связан с StackOverflow