Rails pub / sub mit faye

8

In einer Rails-App habe ich Faye (Rack-Adapter) für Push-Benachrichtigungen (für den Chat) verwendet.

Ich möchte Faye für einen anderen Anwendungsfall (mehr Push-Benachrichtigungen) verwenden, aber ich kann es nicht herausfinden.

In meiner App kann ein Modell aus einem Hintergrundjob erstellt werden, daher möchte ich eine meiner Ansichten aktualisieren (sagen wir die Indexaktion), wenn das Modell erstellt wird.

Wie so:

app / models / post.rb

%Vor%

app / views / posts / index.html.erb

%Vor%

Das Veröffentlichen der Benachrichtigung direkt von einem after_create Callback ist also eine gute Idee Und wenn ich eine Nachricht vom Faye-Server bekomme, wie gehe ich vor, um das "Update" zu implementieren? Mache ich gerade einen AJAX-Anruf, um die Daten vom Server neu zu laden? Das scheint, als wäre es langsam.

Außerdem möchte ich etwas Ähnliches für Aktualisierungen des Modells verwenden (sagen wir, dass ein Benutzer einige Kommentare hinzugefügt hat oder der Autor den Inhalt geändert hat), so dass die DB die ganze Zeit überschlägt, scheint kein guter Plan zu sein ...

    
Seth Jackson 11.08.2011, 15:55
quelle

1 Antwort

5

Erstens, ja, die Veröffentlichung der Benachrichtigung mit after_create ist in Ordnung. Was Sie in Ihrer notify_subscribers -Methode tun sollten, ist die Veröffentlichung aller relevanten Informationen über den neuen Beitrag, den Sie im Client verwenden möchten, damit Sie nicht eine weitere unnötige AJAX-Anfrage machen müssen, wenn Benachrichtigung wird empfangen.

Wenn zum Beispiel die title und content des Beitrags für den Benutzer unmittelbar nach der Erstellung relevant sind, würden Sie Folgendes tun:

%Vor%

... und in der Ansicht würden Sie wahrscheinlich jQuery verwenden, um die Daten über den neuen Post zu verwenden, den Sie vom Server erhalten. Der Rail-Code wird dir hier nicht helfen. Z.B. Sie würden dies tun (vorausgesetzt, Sie verwenden jQuery und haben faye.js in Ihre Kopfzeile eingefügt):

%Vor%

Wenn schließlich die Informationen, die Sie übertragen möchten, zu komplex sind, um sie als Teil der Benachrichtigung zu übertragen, oder Sie bereits AJAX-Prozesse zum Aktualisieren Ihrer Ansicht haben, können Sie einfach die ID des Beitrags veröffentlichen und einen AJAX-Aufruf mit jQuery auslösen in der Callback-Funktion subscribe . Ich würde das aber nur bei Bedarf empfehlen.

    
M. Cypher 11.08.2011, 16:09
quelle