Rails faye система за уведомяване в реално време

Опитвам се да създам проста система за уведомяване, базирана на Faye в реално време, за да мога да изпълня определен javascript за определени действия. Идеята е сравнително проста, въпреки че имам проблеми с внедряването й, не съм сигурен кой път да поема, след като прочетох документацията на Faye.

Текущите мисли са

  • Един уникален фей канал за всеки влязъл потребител, така че можете да натиснете действие (изскачащ прозорец, задаване на текст) само на определен потребител
  • Един div в оформлението на приложението ми, в който мога да пиша текст
  • Един div в приложението ми, който съдържа оформление за изскачащ прозорец

Сега видях урока за railscast за Фей, но Раян работи от създаване на метод на контролер/действие. Не искам да вмъквам неща в db, просто извикайте JS функцията отвсякъде (мисля, че изграждането на помощник на приложение би било добра идея), просто бих искал да направя нещо като „изпълнете javascript 'set_text'" и изпълнете javascript 'show_popup'

Кой би бил най-добрият начин да изградя такава функционалност с Faye? По принцип трябва само да го направя

  • Изпълнете функция на javascript на определен канал на Faye

За да изпълните изскачащото и текстовото съобщение. Малко загубен в това, някой може да ме насочи в правилната посока или може би вече е изградил такава функционалност? THX в advanche!


person Rubytastic    schedule 07.10.2011    source източник
comment
Защо не искате да използвате контролер?   -  person damienbrz    schedule 07.10.2011
comment
Искам да имам гъвкаво решение, което мога да се обадя от всеки контролер, текстът ми по-горе не беше ясен за това, съжалявам. Може би помощникът на приложението е най-добрият начин да отидете, но все още не сте сигурни как да започнете с горната реализация :(   -  person Rubytastic    schedule 07.10.2011


Отговори (1)


От страната на сървъра можете просто да направите (това се нуждае от машина за събития):

client = Faye::Client.new('http://localhost:9292/faye')
client.publish('/notifications/1', 'alert(1);')

Или чрез HTTP:

message = {:channel => '/notifications/1', :data => 'alert(1);'}
uri = URI.parse("http://localhost:9292/faye")
Net::HTTP.post_form(uri, :message => message.to_json)

След това от страна на клиента можете да правите всичко с данните.

var client = new Faye.Client('http://localhost:9292/faye');
client.subscribe('/notifications/1', function(data) {
  eval(data);
});

Просто заменете alert(1); с какъвто и да е JS, който искате да изпълните.

person Heinrich Lee Yu    schedule 24.11.2011
comment
Thx Намерих Faye малко по-малко в документите и в сравнение с Juggernaut се преместих в Juggernaut поради това (и работещи примерни приложения) Все още много се нуждая от Rails Instant Messenger 1-1 може би знаете примерно приложение или сте направили своето собствено изпълнение на това? - person Rubytastic; 24.11.2011
comment
Това би било лесно да се приложи с Фей. Можете да накарате всеки потребител да се абонира за свои собствени канали и да създадете разширение от страна на сървъра, за да се справите с удостоверяването. Причината, поради която избрах да използвам Faye вместо Juggernaut, е, че Jug не позволява на клиентите да изпращат данни. Трябва да направите AJAX повикване към сървъра и сървърът натиска. Не мога да използвам AJAX, защото изграждам джаджа с възможност за вграждане и AJAX не работи между домейни, така че използвах Faye. - person Heinrich Lee Yu; 24.11.2011
comment
Много интересно, благодаря, изглежда трябва да ровя още малко във Faye Again. Чисто от интерес какво строите с Фей? Мерси - person Rubytastic; 24.11.2011