2012-05-23 2 views
1

Я хочу внести изменения в HTML-документы в реальном времени.
Когда переменная изменена с событием, файл HTTP (файл .erb) должен автоматически изменяться вместе.Как сделать сайт в реальном времени с Rails?

#controller.rb 

puts("Downloading...") 

bt = RubyTorrent::BitTorrent.new("public/files/ubuntu.torrent") 
bt.on_event(self, :complete) { @donemessage="Done!" } #<-- This event 


#index.html.erb 
<h1>Transfers</h1> 
<p><%= @donemessage %></p> <!-- <- This must be changed --> 

Как я могу это сделать?

ответ

0

Это совсем непростая задача. Но, как правило, подход следующий:

  1. клиент (для простоты подумайте о браузере) должен сообщить серверу, что он хочет знать о смене состояния данного объекта (ов); то есть он хочет быть подписанным для прослушивания событий, которые происходят на определенных объектах;
  2. все объекты, которые могут изменить свои состояния, должны быть помещены в специальный queue;
  3. на стороне сервера, преобразователь queue, после обработки данного (следующего) объекта в очереди, должен уведомить всех подписанных клиентов о новом статусе объекта.
  4. Теперь, когда клиенты уведомляются, они могут делать дальнейшие действия на основе новых данных об объектах, которые они получили. Например, клиент может обновить часть html страницы.

Опять же, я не могу говорить подробно здесь, поскольку это не так просто.

Взгляните на следующие проекты, чтобы получить больше информации по этой теме:

  1. Meteor
  2. EventMachine
Смежные вопросы