2016-05-03 11 views
2

Hallo ich auf einzuwickeln bin versucht, wie eine Tabelle 2.Angular 2 Updating Objekte in „Echtzeit“

Hier Winkel zu aktualisieren ist, was ich habe: Backend: Express/MongoDB. Updates werden über eine externe App in die DB eingespeist Daten: 90% Daten werden statisch sein. 10% der Daten werden jede Sekunde aktualisiert.

Ich habe Observables/Versprechungen geschaut. HTTP-Anfragen/Socket-IO, aber ich kann mich nicht um die Konzepte kümmern.

Hauptfrage: Kann ich Observables mit socket.io verwenden, um Datensätze zu aktualisieren?

Weitere Fragen zu Daten-Updates

  1. Observable des Angular 2 - Observablen sind nur verwenden, wenn der Kunde zieht Daten? oder können Sie es mit einem Socket verwenden, wenn Daten an den Client gesendet werden. (alle Beispiele verwenden Observables online mit einer HTTP-Anfrage)
  2. Kann Socket IO verwendet werden, um ein Objekt zu aktualisieren, oder ist es nur für neue Objekte? Jedes Beispiel ist eine Chat-Anwendung.
  3. Bei Verwendung von HTTP-Anfragen, wie stellen Sie ein, wie oft die Daten angefordert werden? (Einige Beispiele Online-Nutzung Schleifen, aber das scheint falsch.)

Antwort

3
  1. Observable sind ereignisbasiert, so können sie verwendet werden, um Ereignisse vom Server nutzt Web-Sockets zu erhalten. Werfen Sie einen Blick auf diesen Artikel (Abschnitt „Event-basierte Support“):

  2. In der Tat ist es neue Objekte ist, aber Sie können die scan Betreiber nutzen, um den Inhalt von mehreren Veranstaltungen zu aggregieren.

    var obs = (...) 
    obs.startWith([]) 
        .scan((acc,value) => acc.concat(value)) 
        .subscribe((data) => { 
        console.log(data); 
        }); 
    

    Sehen Sie diese Frage für weitere Informationen:

  3. Wenn Sie mit einem Zeitintervall ziehen möchten, können Sie die interval Methode nutzen:

    Observable.interval(3000).flatMap(() => { 
        return this.http.get('/some-request').map(res => res.json()); 
    }).subscribe((data) => { 
        console.log(data); 
    });