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