Rails в режиме реального времени на веб-странице? - PullRequest
2 голосов
/ 01 июля 2011

Я передаю приложение Ruby, которое я когда-то сделал, в Rails.Теперь приложение выполняет некоторые вычисления, которые занимают некоторое время (до бесконечности (в теории), если вам нравится: p).Чтобы показать пользователю статус всего, я ранее использовал консоль.Теперь, очевидно, я хочу, чтобы мой браузер показывал это.

У кого-нибудь есть какие-нибудь указатели, с чего начать чтение / примеры / гемы / идеи?Я довольно новичок в веб-разработке, но я слышал о jQuery, который может сработать?

Ответы [ 4 ]

3 голосов
/ 06 марта 2014

Если ваши вычисления занимают много времени, вы захотите передать их какому-нибудь фоновому процессору.Есть несколько драгоценных камней, которые могут помочь вам сделать это.Вот несколько с уроком, как использовать их с Rails.

Предоставление веб-интерфейса для отображения статуса обработки расчетов может быть выполнено несколькими способами.Одним из способов может быть опрос.

2 голосов
/ 01 июля 2011

Насколько я понимаю, у вас есть два варианта сделать это

1 - используя какой-то метод принудительной установки сервера.Вы можете использовать следующие компоненты

Джаггернаут (http://juggernaut.rubyforge.org/) http://www.ape -project.org /

2 - Использование PeriodicalUpdater с JQuery.Это отправит запрос на сервер через заданный интервал времени.

Вы можете заполнить таблицу db, mem-cache или любое хранилище данных своим состоянием и написать метод для чтения и возврата значения, этот метод можно вызвать через Ajax.PeriodicalUpdater

Я сделал это, но это убивает производительность, так как он запрашивает сервер (в моем случае это было каждые 5 секунд)

Даже если я лично этого не сделал, я предпочитаю, чтобы опция server-push была методическим путем

HTH

ура

Самера

1 голос
/ 07 марта 2014

Rails прямая трансляция в настоящее время в рельсах 4. Вы можете использовать обработку фоновых задач, как рекомендовано Jason R, а затем в конце задачи вы можете помещать результаты в открытую трансляцию.Например, использование redis pub / sub для возврата асинхронных результатов от рабочих на контроллер живого потока.

Это лучше, чем опрос сервера с помощью PeriodicalUpdater, поскольку он удаляет ненужные запросы от клиента, но требует свободного сокета длякаждый подключенный клиент.

0 голосов
/ 09 марта 2014

Я просто нахожу суперинструмент :) Добавьте этот скрипт в свой проект:

  <script src='https://gist.githubusercontent.com/vitalyp/9441352/raw/5be994fbc78bd2bcc7ad31192f095c888d02f819/myconsole.js'></script>

и где-нибудь в document.ready (или из консоли браузера), вызовите функцию:

pop_console();

Отображает окно с console.log(...) строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...