2016-04-20 10 views
1

Wir verwenden rethinkdb mit changefeed und socket io. Und es funktioniert gut. In unserer App für jede Verbindung vom Client (wenn ein Benutzer zu der Site navigiert) abonnieren wir den Benutzer zu einem changefeed mit einer konstanten Abfrage (wie * aus Nachrichten auswählen). Wenn ich 5 Browser-Instanzen öffne, wird der 5-fache Änderungs-Feed-Code ausgeführt.Abfrage bezüglich rethinkdb changefeed

Meine Frage ist, wie der changefeed intern arbeiten wird. Ob es 5 Änderungsfeed-Abonnements für den Server rethnkdb hören wird. Oder der Server identifiziert eine eindeutige Abfrage und hört intern für jede solche Client-Verbindung intern einen einzelnen Wechselfeed und arbeitet wie ein Broadcaster.

Dank Anup

Antwort

1

RethinkDB wird changefeed Nachrichten dedupliziert intern auch wenn Sie Feeds auf verschiedene Abfragen abonniert haben. Die Maschine, auf der der Schreibvorgang stattfindet, sendet eine einzelne Nachricht an alle Maschinen mit abonnierten Clients, und diese Maschinen senden dann eine Nachricht an alle Clients, die diese Änderung sehen müssen.

0

Was ich tun würde, ist:

  • eine ConnectionsManager Klasse
  • die ConnectionHandler Register/un-Register jede Verbindung beim Verbinden/Schließen auf jedem Back-End-Server erstellen
  • die ConnectionsManager die einzige changeFeed sein muss
  • Teilnehmer
  • ConnectionsManager werden die Änderungen auf alle seine aktiven Verbindungen übertragen

So ist es sowohl für die DB als auch für das Backend leichter.