2015-03-05 1 views
1

В приложении rails у меня есть асинхронный метод, который работает только асинхронно, когда запросы отличаются.em-synchrony не является асинхронным для идентичных запросов

В моем контроллере у меня есть этот метод:

require "em-synchrony/em-http" 
def test 

    EventMachine.synchrony do 
     page = EventMachine::HttpRequest.new("http://127.0.0.1:8081/").get 

     render :json => {result: page.response} 
     request.env['async.callback'].call(response) 
    end 
    throw :async 
end 

на моей странице я называю этот метод следующим образом:

//Not asynchronous. :(
//The second request takes twice more time than the first one 
$.get("/test"); 
$.get("/test"); 

Однако, чтобы сделать вызовы асинхронными, мне нужно запросы быть такие как:

//Asynchronous. :D 
$.get("/test?a"); 
$.get("/test?b"); 

Почему? Я бы хотел, чтобы мой код всегда был асинхронным. Даже для идентичных запросов. FYI Я использую сервер Thin

ответ

1

Я нашел ваш вопрос действительно интересным, потому что я собираюсь реализовать свой первый веб-сервер на основе Reactor-pattern, и, конечно же, я прошел через em-syncrony.

Вы пробовали также использовать aget вместо get?

page = EventMachine::HttpRequest.new("http://127.0.0.1:8081/").aget 

Дайте мне знать, если это имеет значение :)!