Как создать прямую трансляцию с использованием Rails - PullRequest
3 голосов
/ 03 февраля 2010

Я пытаюсь создать блок прямой трансляции, который идентифицирует последние данные, добавленные к обсуждению на форуме, и автоматически обновляет блок на другой странице последними сообщениями на этом форуме. Я использую Ruby on Rails, и я очень признателен за любую помощь в этом.

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

Любая помощь в создании одного из них была бы замечательной

1 Ответ

5 голосов
/ 03 февраля 2010

Эти сайты делают это путем регулярного опроса сервера с XmlHttpRequests, сделанными javascript. Это стало возможным благодаря функции setInterval

Самая короткая версия примерно такая (jQuery, но перевод библиотеки был бы простым):

setInterval(function() {
  $.getJSON('/posts.json', function(posts) {
    // code to remove old posts
    // code to insert new posts
  });
}, 5000);

5000 - это время в миллисекундах между вызовами функций.

Затем ваш контроллер сообщений просто вернет последние сообщения:

class PostsController < ApplicationController
  @posts = Post.find(:all, :order => 'created_at desc')

  respond_to do |format|
    format.html
    format.json { render :json => @posts.to_json }
  end
end
...