2017-01-13 2 views
1

Ich habe einen Server in NodeJs ausgeführt, wo ich eine große Datendatei hochladen. Ich benutze angular-file-upload auf dem Client, um dies zu tun, was mir hilft, den Upload-Fortschritt durch eine Reihe von Callback-Funktionen zu verfolgen.Track Nodejs Server Fortschritt auf Client

Wenn der Upload abgeschlossen ist, beginnt der Server mit den Daten zu arbeiten (Konvertieren des Formats und Hochladen in eine benutzerdefinierte Datenbank). Ich möchte diesen Fortschritt auch auf die gleiche Art und Weise verfolgen wie den Upload, indem ich einen weiteren Fortschrittsbalken starte.

Was ist der richtige Weg, dies zu tun? Wenn ich durchs Internet gehe, habe ich verstanden, dass Sockets der richtige Weg sind. Macht das den Upload meiner eckigen Datei überflüssig oder gibt es einen anderen Weg, dies zu tun? Richte ich nach Abschluss des Uploads eine neue Verbindung ein oder verwende ich die Upload-Verbindung und gebe die Fortschrittsinformationen an den Client zurück?

Socket.io hat eine Reihe guter Tutorials zur Einrichtung eines Chats, der Nachrichten an Clients sendet, aber das deckt meine wirklich komplexere Situation nicht wirklich ab.

Alle Hinweise in die richtige Richtung würden sehr geschätzt werden.

Antwort

1

Wenn Sie den Echtzeitstatus des Fortschritts abrufen möchten, müssen Sie sofort nach dem Hochladen der Datei eine Socket-Verbindung öffnen, um Daten über den Fortschritt der serverseitigen Logik zu erhalten, für die Sie eine benötigen Datenbank, die ständig mit dem Fortschritt aktualisiert wird.

Aber dies ist ein Schmerz zu führen, wie Sie eine db wie Redis für die Verfolgung des Fortschritts in einer effizienten Weise verwenden würde, die wiederum die Architektur Ihres Projekts erhöhen würde, die wiederum den Wartungsaufwand erhöht und obwohl es einige sind großartige Tutorials für socket.io, meine Lösung wäre, ein Echtzeit-Backend wie Firebase oder Back & (geschrieben Backand) zu verwenden.

Sobald die Datei hochgeladen wurde, wird Ihr Backend den aktuellen Prozess und den Fortschritt an Firebase weiterleiten und Ihre Kundenseite wird diese Änderungen abhören und alle Änderungen werden automatisch in Ihrer Benutzeroberfläche reflektiert, dank der 2-Wege-Datenbindung.

Verwandte Themen