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";

?>
Foi útil?

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
scroll top