У меня есть этот код в сценарии загрузки Faye:
faye_server = Faye::RackAdapter.new(:mount => '/faye', :timeout => 45)
faye_server.add_extension(ServerAuth.new)
server_uri = URI.parse(BacklinkHealth::FAYE_SERVER)
faye_server.on(:subscribe) do |client_id, channel|
puts "subscribed #{channel}"
if channel.starts_with?('/pagination')
website_id = channel.split('/')[2]
page = channel.split('/')[3]
app = ActionDispatch::Integration::Session.new(Rails.application)
app.get app.pagination_website_backlinks_path(website_id, :page => page)
message = {:channel => channel, :data => app.response.body, :ext => {:auth_token => BacklinkHealth::FAYE_TOKEN}}
puts 'started HTTP post'
Net::HTTP.post_form(server_uri, :message => message.to_json)
puts 'finished HTTP post'
end
end
Проблема в том, что выполнение приходит к "запущенному HTTP-сообщению", а затем требуется больше минуты, чтобы сообщение было зарегистрировано в javascript на стороне клиента. Сообщение «завершенное сообщение HTTP» никогда не печатается :( Я не понимаю, что происходит.
Если я попытаюсь выполнить идентичную HTTP-запись из консоли Rails, она будет выполнена мгновенно, хотя один или два раза случалось, что это занимало минуту.
Есть идеи?