Ajax означает асинхронный Javascript и XML. Что он делает, это отправлять запросы на сервер и обрабатывать его ответы асинхронным способом; без необходимости обновлять вашу страницу.
Запрос на HTTP-сервер - это не то, что остается открытым (если вы не настроите его на открытие соединений и, как правило, это не так). Протокол HTTP не имеет состояния, и это означает, что каждый запрос, который вы отправляете на сервер, будет рассматриваться без подключения вообще с предыдущими запросами. Фактически, для поддержания состояния между запросами, которые вы получили, чтобы управлять этим уровнем на веб-приложении, который в этом случае является рельсами, отправка идентификатора сеанса браузера на сервер (обычно идентификатор сеанса, хранящийся локально в cookie-браузере клиента) который может быть обработан вашим приложением rails для идентификации открытого сеанса.
Таким образом, если ваш интерфейс не взаимодействует с HTTP-сервером с постоянными соединениями, ваш сервер не будет поддерживать соединение, установленное при открытии веб-браузера. Он отправит ответ и закроет соединение.
Что позволяет AJAX делать запросы на сервер и обрабатывать ответы без перезагрузки страницы. HTTP-сервер откроет соединение до тех пор, пока оно не ответит на запрос вашего веб-браузера, после чего соединение будет закрыто, поэтому непрерывность не будет сохранена.
Чтобы обновить данные на вашем эрби-представлении, вам нужно управлять этим с помощью jQuery, отправляя запросы каждые х раз. Ниже приведен пример, который делает запрос ajax каждые 1 секунду.
setInterval("fetchDataAndUpdateView();", 1000);
fetchDataAndUpdateView = function(){
jQuery.ajax({
url: "your-url",
success: function(){
//do something here to update your html with the data you got from the server
}
})
});
Какую версию рельсов вы используете? В рельсах 4 есть функция потокового вещания, которая звучит так, как будто она может удовлетворить ваши требования. [проверить это сообщение в блоге о потоковых данных] (http://rubysnippets.com/2013/04/10/rails-4-live-streaming-versus-node-dot-js/) – plasticide
Я использую 3.2. Но о чем я должен заботиться? – Alexey
, так что кажется, что вам нужна страница, которая отображает текущее состояние какого-либо процесса. Определенные тайм-ауты для отображения страницы. Они могут различаться в зависимости от конфигурации сервера приложений (например, единорога). Если ваша фоновая страница всегда возвращает текущее состояние, ваш вызов ajax может запускаться в цикле для периодического опроса страницы и обновления страницы вашего приложения, что устраняет необходимость в открытом соединении. – plasticide