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

?>
War es hilfreich?

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