Как сгенерировать ответ в длительном синхронном запросе в Rails? - PullRequest
1 голос
/ 01 января 2012

У меня проблемы с выяснением, как это сделать с помощью Rails, хотя, возможно, это связано с тем, что я не знаю подходящего термина для него.

Я в основном хочу сделать это:

def my_action
    sleep 1

    # output something in the request, but keep it open
    print '{"progress":15}'

    sleep 3

    # output something else, keep it open
    print '{"progress":65}'

    sleep 1

    # append some more, and close the request
    print '{"sucess":true}'
end

Однако я не могу понять, как это сделать. Я в основном хочу воспроизвести медленное интернет-соединение.

Мне нужно сделать это, потому что я перебираю сайты, на что уходит время, когда я «сплю» выше.

Обновление Я читаю это с помощью iOS, поэтому я не хочу сервер веб-сокетов, я думаю.

Ответы [ 3 ]

0 голосов
/ 01 января 2012

Если бы это работало на стороне сервера, как бы вы справились с этим на стороне клиента? HTTP-запросы обычно могут иметь только один ответ (который может быть разбит на части при использовании потоковой передачи, что, на мой взгляд, не сработает).

Полагаю, вам придется либо просматривать веб-сокеты, либо делать отдельные запросы для каждого шага.

0 голосов
/ 01 января 2012

Может быть, это именно то, что вы ищете:

Бесконечный потоковый JSON из Rails 3.1

0 голосов
/ 01 января 2012

Возможно, вы захотите немного почитать о HTML5 WebSockets (для старых браузеров существуют хаки с обратной совместимостью), которые позволяют передавать данные на клиент с сервера.

В Rails есть несколько способов реализацииСервер WebSockets.Этот вопрос дает некоторые из вариантов Лучший инструмент Ruby on Rails WebSocket

...