resposta com várias partes em Ruby / cremalheira
Pergunta
Eu quero o meu servidor para enviar uma resposta com várias partes (multipart / x-mixed-replace). Eu preferiria algum tipo de solução usando o framework Sinatra ou um aplicativo cremalheira genérico, mas nenhum exemplo em ruby ??seria bom. Aqui é o equivalente do que eu estou tentando fazer, em 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";
?>
Solução
Você provavelmente pode usar o método out.flush para isso:
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
No entanto, tenha em mente que se você estiver usando o Mongrel para servir o seu código Ruby (como muitas pessoas usando RoR fazer), você não será capaz de transmitir a todos.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow