2010-02-03 5 views
3

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

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

Любая помощь на том, как идти о создании один из них будет удивительным

ответ

5

Эти сайты делают это регулярно опрашивает сервер с 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 
+0

Благодаря Бен, Jquery велик. Но не будет ли это слишком много запросов на сервер, даже если у меня будет 50-60 пользователей одновременно? Работает ли катящий твиттер? – Sid

+1

Ну, это зависит от совсем немного. Если его обновление каждые 5 секунд и простой запрос БД, я сомневаюсь в этом. Но если вам нужно выжать больше производительности, рассмотрите использование Rails Metal: http://railscasts.com/episodes/150-rails-metal – Ben

Смежные вопросы