2008-12-14 3 views
3

Я хочу, чтобы мой сервер отправлял многостраничный ответ (multipart/x-mixed-replace). Я бы предпочел какое-то решение с использованием инфраструктуры Sinatra или общего приложения Rack, но любой пример в рубине был бы приятным. Вот эквивалент того, что я пытаюсь сделать, в PHP:Реакция многопункта в Ruby/Rack

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

?> 

ответ

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), вы не сможете вообще потопить.

+0

Хороший вопрос о Монгреле, я пользуюсь пассажиром из-за этого. – Zach 2009-01-07 07:07:23

Смежные вопросы