3

我希望我的服务器发送一个多部分响应(multipart/x-mixed-replace)。我更喜欢使用 Sinatra 框架或通用 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";

?>
4

1 回答 1

2

您可能可以为此使用 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 的人所做的那样),您将根本无法进行流式传输。

于 2009-01-04T13:06:18.497 回答