2016-08-04 9 views
1

ich so etwas wie Facebook Reaktionen über getstream.io bin der Umsetzung. Posting und Entfernen von Aktivitäten ("Reaktionen") funktioniert gut.Getstream.io: Nachrichtenformat für gelöschte Aktivitäten über Socket/faye

Basics:

  • Während die Socket-Funktion (Faye) von getstream Umsetzung Feed Änderungen in Echtzeit zu reflektieren, sah ich, dass das Format einer Buchse Nachricht für neue Aktivitäten aus dem für gelöschte Aktivitäten unterscheidet .

Beispiel mit einer Reaktion in jedem gelöscht und neu:

{ 
    "deleted": [ 
    "d5b1aee0-5a1a-11e6-8080-80015eb61bf9", 
    "49864f80-5a19-11e6-8080-80015eb61bf9", 
    "47fe7700-5a19-11e6-8080-80015eb61bf9", 
    "4759ab80-5a19-11e6-8080-80015eb61bf9", 
    "437ce680-5a19-11e6-8080-80015eb61bf9" 
    ], 
    "new": [ 
    { 
     "actor": "user:55d4ab8a11234359b18f06f6:Manuel Reil", 
     "verb": "support", 
     "object": "control:56bf2fb884e5c0756e910755", 
     "target": null, 
     "time": "2016-08-04T11:48:23.168000", 
     "foreign_id": "55d4ab8a11234359b18f06f6:support:56bf2fb884e5c0756e910755", 
     "id": "58d9c000-5a39-11e6-8080-80007c3c41d8", 
     "to": [], 
     "origin": "control:56bf2fb884e5c0756e910755" 
    } 
    ], 
    "published_at": "2016-08-04T11:48:23.546708+00:00" 
} 
  • I den subscribe aggregiert Feed, der eine flache Vorschub folgt.
  • Ich füge Aktivitäten hinzu und entferne sie über den Flat Feed.
  • Abonnements auf die flache und die aggregierten Feed zurückkehren beide die gleiche Meldung beim Hinzufügen und Entfernen von Aktivitäten.

Herausforderungen Ich bin vor:

  • Wenn ich eine Aktivität zu entfernen (via foreign_id) - warum erscheinen 5-IDs in der gelöschten Array?
  • Ich brauche die foreign_id, um Änderungen in der App haben, während die Socket-Nachricht von gestream.io zu verdauen. Dies funktioniert gut für neue Aktivitäten, wenn das vollständige Objekt gesendet wird (siehe Beispiel oben). Für die gelöschten Aktivitäten fehlen sie jedoch, da nur ein Array von ids gesendet wird.

Mögliche Ansätze:

  • Kann ich irgendwie meine getstream faye Abonnement oder Config (auch) konfigurieren zurückzukehren foreign_ids für die gelöschten Artikel?
  • Ich könnte versuchen, diese ids zusätzlich basierend auf der Socket-Nachricht zu holen, aber dies scheint fast lächerlich.

Vielen Dank.

Antwort

1

Entfernen Aktivitäten über foreign_id löscht alle Aktivitäten mit dem angegebenen foreign_id in der Befüllung vorlagen. Dies ist einer der Hauptvorteile beim Verwenden des Foreign_id-Felds, es ermöglicht kaskadierende Löschvorgänge für eine Gruppe von Aktivitäten. (zB Post und Likes ist ein typischer Anwendungsfall, in dem Sie einen Post und alle damit verbundenen Likes löschen möchten).

Ein weiterer Vorteil der Verwendung von foreign_id besteht darin, dass Sie die von Stream generierte ID nicht überwachen müssen.

Sie sollten in der Lage sein, Ihr erstes Problem zu lösen, indem Sie einen Wert für das Feld foreign_id auswählen, der eindeutig ist (zB die Objekt-ID aus Ihrer Datenbank). Auf diese Weise können Sie leicht löschen und das kaskadierte Löschverhalten vermeiden.Wenn Sie Ihre Benutzeroberfläche auf der Grundlage der Echtzeit-Updates aktualisieren, heißt das auch, dass Sie bereits aus demselben Feed gelesen haben und dass Sie die Liste der Aktivitäten mit ihren IDs und Foreign_ids haben. Bei der Auswahl von Aktivitäten aus activity_id sollte nur eine Art von Speicherabbildung erstellt werden (z. B. ein data-activity_id-Attribut zu Ihrem DOM hinzufügen).

+0

Super schnelle Antwort - danke. Ad 1) Entfernen über Foreign_id ist cool. Ad 2) Wie ich den aggregierten Feed anzeigen und bearbeiten. Also sind die IDs dort nicht nützlich. Aber ich konnte auch den flachen Feed abrufen und von dort aus eine hashmap erstellen. Kennen Sie eine bessere Idee für den aggregierten Feed? –

Verwandte Themen