Используя когда это драгоценный камень - (возможно, смотри ниже) ....
Установите значение в таблице базы данных очереди перед отображением страницы. Используя задачу «cron» (всякий раз, когда gem), которая контролирует таблицу очередей, вы можете отправлять запросы в API Steam и заполнять таблицу результатов очереди. На отображаемой странице вы можете выполнить периодическую проверку JavaScript с помощью AJAX для контроля таблицы результатов очередей и заполнения страницы, как только API вернет результат.
Дополнительная информация:
я не использовал, когда драгоценный камень, но пока я сделал еще некоторое чтение на него, и там может быть проблема с интервалом не быть достаточно коротким, чтобы сделать его как можно ближе к реальному времени, насколько это возможно , В настоящее время я занимаюсь обработкой своей работы с помощью приложения Java, использующего таймер, но задаюсь вопросом о переходе в любой момент и в CRON. Поэтому всякий раз, когда вы не можете работать на вас, но идея асинхронного процессора, выполняющего работу с API, является сутью моего ответа. Если полезная нагрузка из API Steam небольшая и достаточно быстро возвращается, то, как было сказано выше, вы можете использовать прямой вызов через AJAX для контроллера, а затем API Steam.
Что касается кода Rails, он должен быть довольно стандартным.
контроллер:
def index
# Create a Steam API Queue row in the database and save any pertinent information needed for contacting the Steam API
@unique_id = Model.id # some unique id created for the Steam API queue row
end
# AJAX calls START
def get_api_result
# Check for a result using
params[:unique_id]
# render partial for <div>
end
# AJAX calls end
Вид: индекс
# Display your page
# Setup an intermittent AJAX call to "controller#get_api_result" with some unique id #{@unique_id} i.e. params[:unique_id] to identify the Steam API Queue table row, populate the result of the call into a <div>
external_processor_code (Всякий раз, когда реализация Gem, Java, некоторые процессоры работы, и т.д ...)
Несколько потоков должны быть доступны обрабатывать таблицу очередей Steam API и получать результаты каждые несколько секунд и заполнять таблицу результатов, которая будет считываться контроллером по запросу через вызов AJAX.
Чтобы дать полный пример такого типа реализации, потребуется некоторое время, поэтому я кратко, с концептуального уровня, изложил его выше. Могут быть некоторые другие способы сделать это, что может быть более эффективным с тем, как расширяется технология, поэтому, пожалуйста, сделайте некоторое расследование.
Надеюсь, это полезно!
Почему бы не сделать запросы ajax на ваш контроллер вместо прямого доступа к пару? – stevebot
Пробовал это! Это сработало. Благодаря тонну. – Nick