سؤال

وأريد خدمة بلدي لتقوم بإرسال استجابة متعددة (/ متعددة الأشعة مختلطة-استبدال). كنت تفضل نوعا من الحل باستخدام الإطار سيناترا أو التطبيق الرف عام، ولكن أي سبيل المثال في روبي يكون لطيفا. وفيما يلي ما يعادل ما أحاول القيام به، في 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

ومع ذلك، نضع في اعتبارنا أنه إذا كنت تستخدم هجين لخدمة متاحة روبي الخاص بك (وكثير من الناس باستخدام رور تفعل)، فإنك لن تكون قادرا على تيار على الإطلاق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top