Если вы хотите на самом деле выполнять запросы на стороне сервера (решение tfe для javascript - хорошая идея), вам лучше всего использовать EventMachine . Использование EventMachine дает простой способ сделать неблокирующий ввод-вывод.
Также проверьте EM-Synchrony для набора клиентов с поддержкой волоконно-оптических сетей Ruby 1.9 (включая HTTP).
Все, что вам нужно сделать для неблокирующего HTTP-запроса, это что-то вроде:
require "em-synchrony"
require "em-synchrony/em-http"
EM.synchrony do
concurrency = 2
urls = ['http://url.1.com', 'http://url2.com']
# iterator will execute async blocks until completion, .each, .inject also work!
results = EM::Synchrony::Iterator.new(urls, concurrency).map do |url, iter|
# fire async requests, on completion advance the iterator
http = EventMachine::HttpRequest.new(url).aget
http.callback { iter.return(http) }
http.errback { iter.return(http) }
end
p results # all completed requests
EventMachine.stop
end
Гудлак!