• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Wenn User offline, auf Offline-Seite weiterleiten, Daten speichern und (wenn User wieder Online) wieder an Online-Seite übergeben

Aaron3219

Senior HTML'ler
Hallo liebes Forum,

mal eine (evtl.) komplexere und eventuell unmögliche Aufgabe:
Ich stelle mir gerade die Frage, die schon im absolut überlangen Titel steht:
Mal angenommen, ich habe eine WebView-APK und die APK erkennt, dass der User offline ist.
Ich weiß, dass man dann auf eine offline-Seite weiterleiten kann.
Ist es möglich, die dort gespeicherten Daten wieder an die Datenbank der Online-Seite weiterzugeben?

Beispiel:
Der User geht offline und wird auf die entsprechende Seite weitergeleitet.
Dort schickt er ein Form ab, dass in Form eines Arrays gespeichert wird.
Ist der User wieder online, wird das Array an die Seite geschickt.

Sollte es auf diesem Wege nicht gehen, gibt es doch bestimmt irgendwelche workarounds oder nicht?
Es muss auch nicht unbedingt mit webview einer apk sein. Es kann auch im Browser sein.



Es müsste doch auch möglich sein, ohne eine offline-Website, sich als APK mit der Database zu verbinden (also ohne Offline-WebView-Seite).
Dort könnte ich ein Form generieren, dass dann in die Datenbanken der Online-Website eingetragen wird.

Ich bin offen für Vorschläge.
 
Werbung:
Sind denn so Giganten wie Firebase und so was geeignet?
Zumindest, wenn man mal die Kosten außer Acht lässt?

Ich rede von durchaus 10 Millionen Einträgen und mehr.
Können die mit sowas umgehen?
Es kann auch sein, dass mal 100.000 Einträge importiert werden müssen.
MySQL passt natürlich ganz gut, weil es eben um Tabellen geht.
Andererseits ist z.B. Firebase (ich rede übrigens vom Cloud Firestore-System) einfach zu benutzen und dazu auch noch pures JS.

Oder gibt es einen Weg, eine pwa mit MySQL (Stichwort: IndexedDB) zu bauen, der genauso einfach ist, wie mit der JS-Variante?

Ein Nachteil hat Firebase nämlich schon mal sicher:
Mit Arrays muss man aufpassen und Dinge wie Auto-increment gehen auch nicht ohne Weiteres (Stichwort Push IDs).

Edit:
Denn laut Google
https://firebase.google.com/docs/firestore/quotas
gibt es da schon ein paar Limitationen, die sich nicht alle umgehen lassen.
 
Zuletzt bearbeitet:
Werbung:
Frontend und Backend sind völlig unabhängig voneinander und werden über eine API connected. BaaS Provider wie Firebase haben den Vorteil, dass sie die API mitliefern.

Für dein Vorhanden solltest du erstmal das Frontend mit dem Framework deiner Wahl (Angular, React, Vue, etc.) bauen.
 
Das Front-End steht schon.
Ich arbeite schon seit einiger Weile an dem Projekt.

Ich habe den Artikel auf Google Dev gefunden:
https://developers.google.com/web/fundamentals/instant-and-offline/web-storage/offline-for-pwa

Im glaube ich beginne es richtig zu verstehen.
Im Prinzip brauche ich gar kein BaaS Provider.
Firebase liefert also schon die API, ich kann aber auch selber eine Integrieren, wie z.B. IndexedDB, die ich wahrscheinlich auch verwenden werde.
Diese APIs speichern die Internetseite auf dem client-side Storage oder DOM-Storage und geben diesen dann aus.

Aber es gibt doch auch für den Storage Begrenzungen.
Was passiert, wenn dieser Storage voll ist?
In dem Artikel steht dazu was, doch was ich hätte da doch noch die ein oder andere Frage.
 
Zuletzt bearbeitet:
Ich hab mich jetzt außerdem eine ganze Weile mit indexedDB beschäftigt und habe trotzdem noch Fragen:
So wie ich das verstanden habe, muss ich bei indexedDB eine Datenbank erstellen, sofern sie nicht schon existiert.
In diese Datenbank kann ich natürlich Einträge machen. Wenn ich also die Internetseite aufrufe und dann ein Form abschicke,
kann ich die Daten darin speichern und, sobald ich wieder Online bin, benutzen um sonst was damit zu machen.

Aber die Seite an sich kann ich doch auch irgendwie speichern, sowie
https://www.pokedex.org/

Man geht auf die Seite und wenn man dann mal den Flugmodus anschaltet, funktioniert sie trotzdem einwandfrei.
Müsste ich dann etwa den HTML-Code, den ich darstellen will ebenfalls in einer IndexedDB speichern?
Das scheint mir nämlich irgendwie nicht richtig. Und entweder verwende ich die falschen Suchbegriffe, aber im Internet finde ich immer nur Guides dazu, wie man zwar Einträge in die DB macht, aber wie ich eine komplette Seite speichern kann, bleibt mir ein Rätsel.

Edit:
Folgender Plan:
Ich benutze das manifest-Attribut, um meine Seite im Cache zu speichern.
Meine Seite sollte dann offline vollständig geladen werden. Schickt der User ein Form ab, wird es mit IndexedDB gespeichert und, sobald der User Internet hat, aus der IndexedDB geladen und verarbeitet.
Ist das best-practice?

Meine vorherigen Fragen hätten sich damit erledigt, doch eine Frage hab ich noch (sofern mein Weg best practice ist):
Wie krieg ich es hin, eine MySQL-Datenbank offline abzurufen?
 
Zuletzt bearbeitet:
Werbung:
Ich verweise nochmal aufs Edit. Ich weiß ja, wenn man sich den Beitrag schon durchgelesen hat und das Edit spät kommt, liest man es meistens nicht:

Folgender Plan:
Ich benutze das manifest-Attribut, um meine Seite im Cache zu speichern.
Meine Seite sollte dann offline vollständig geladen werden. Schickt der User ein Form ab, wird es mit IndexedDB gespeichert und, sobald der User Internet hat, aus der IndexedDB geladen und verarbeitet.
Ist das best-practice?

Meine vorherigen Fragen hätten sich damit erledigt, doch eine Frage hab ich noch (sofern mein Weg best practice ist):
Wie krieg ich es hin, eine MySQL-Datenbank offline abzurufen?
 
Wie krieg ich es hin, eine MySQL-Datenbank offline abzurufen?

Du hast es noch nicht ganz verstanden.

Client und Server sind als komplett eigenständige Anwendungen zu betrachten.
Die haben jeweils ihren eigenen "Store" in dem sie Daten speichern, und eine API um Daten auszutauschen.

Der Client verwendet als Datenbank entweder localStorage oder indexedDB - der Server hingegen MySQL, MongoDB,...

Deine Aufgabe wäre es nun, die Daten vom Server - über die API - in den Store deines Clients zu bringen. Und umgekehrt ebenso:
Code:
IndexedDB <-> Client <-> [Internet] <-> Server <-> MySQL

Wie du siehst, ohne Internet ist der Weg zwischen Client und Server bzw. IndexedDB und MySQL nicht möglich.
IndexedDB und Client können aber weiterhin kommunizieren, Server und MySQL genauso.
 
Doch ich hatte es schon richtig verstanden.
Aber man muss tatsächlich eine Menge Fantasie aufbringen, um die Indirekte Frage zu verstehen.

Die Frage hätte lauten müssen:
Wie kriege ich die MySQL-Datenbank in die IndexedDB des Clients?
Bzw. eigentlich:
Was ist der beste Weg dafür?

Die Frage hast du ja schon beantwortet.
Aber ist IndexedDB dafür ausgelegt?
Wie gesagt, es können mehrere Millionen Einträge sein.
Ich weiß, dass IndexedDB für große Datenmengen ausgelegt ist, aber so große Datensätze??
 
Werbung:
Bei IndexedDB geht es nicht darum, eine komplette Datenbank im Browser zu speichern, sondern zu antizipieren, welche Daten der User anfordern könnte, während er keine Verbindung zum Netz hat. Das könnten z.B. die nächsten Songs aus einer Playlist sein, die er in der U-Bahn abspielen will.

Ich würde an deiner Stelle das MySQL zu NoSQL (Mongo) migrieren. Und wie immer gibt es auch zu IndexedDB Tutorials, die man am Anfang durcharbeiten sollte.
 
[QUOTE = "Aaron3219, post: 396821, member: 35307"]
Hello dear forum,

sometimes a (possibly) more complex and possibly impossible task:
I am just asking myself the question that is already in the absolutely long title:
Let's say I have a WebView APK and the APK detects that the user is offline.
I know that you can then redirect to an offline site.
Is it possible to forward the data stored there to the database on the online site?

Example:
The user goes offline and is forwarded to the corresponding page.
There he sends a form that is saved in the form of an array.
If the user is online again, the array is sent to the page.

Should this not work, are there any workarounds or not?
It doesn't necessarily have to be an apk with webview. It can also be in the browser.



It should also be possible to connect to the database as an APK without an offline website (i.e. without an offline WebView page).
There I could generate a form that is then entered in the databases of the online website.

I am open to suggestions.
[/ QUOTE]

I'm setting out this weekend on a pretty decent sized road trip over the next 2 weeks. Wanted to ask the community if there are any must have app's other than Waze for road trips?

FYI I '
 
Werbung:
Zurück
Oben