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

Apps wie Whatsapp und die Daten

Bourbon

Mitglied
Hallo Leute,

viele von euch nutzen ja Whatsapp und diverse andere Apps.
Meine Frage wäre jetzt:
Wie legen diese Apps die Daten lokal ab?
Da die Chats ja auch offline verfügbar sind, müssen diese ja auch irgendwie und irgendwo abgespeichert sein.
Ich würde jetzt denken, das ganze wird via JSON im local.storage gespeichert.
Häufig lese ich bzw. bekomme ich gesagt, dass dies aber unsicher wäre und man lieber jedes mal neu abfragen sollte.
Aber man das bei solchen Apps wie Whatsapp, Threema etc. überhaupt Sinn?

Und dann würde mich mal interessieren, wie die das mit dem aktualisieren machen?
Whatsapp kann ja kaum ständig alle offenen Chats abfragen, dennoch wird es ja irgendwie jede Sekunde aktualisiert.
Wie macht man so etwas?
 
Zuletzt bearbeitet:
Werbung:
Hallo,

hast dir noch nicht richtig angeschaut wa?
alle Daten werden auf der SD Karte gespeichert, bilder und Chats auch, schau einfach mal auf deine SD.

local.storage, kann man da für nicht nutzen.

Cheffchen
 
Werbung:
Am meisten interessiert mich ja die Frage, wie das mit den Änderungen bzw. neuen Nachrichten funktioniert.
Wenn die Daten im internen Speicher abgelegt werden, die erfolgt dann der Abgleich mit den neuen Nachrichten?
Nur durch den Vergleich der Anzahl an Nachrichten, bspw.
intern 41, auf Server 43, ergo 2 Neue?

Oder vielleicht durch das Datum:
letzter Abgleich 07.04.2015 12:43:05 - 41
letzte Änderung 07.04.2015 12:45:12 - 43?

Und keine Sorge, ich will nicht noch einen Messenger machen.
Mich interessiert das Prinzip bzw. die Funktion, weil mein Projekt ähnlich funktionieren sollte.
 
Werbung:
Achso und zum Aktualisieren: im Web ist man da grundsätzlich ja eingeschränkt. Client frägt Website bei Server an, Server sendet zurück. Ziemlich stupide doch simpel.

Während Whatsapp geöffnet ist, wird mit dem WA-Server wohl eine Socket-Verbindung aufrecht gehalten. Über diese werden neue Nachrichten gesendet - in beide Richtungen. (Anders als bei eben HTTP)

Wenn Whatsapp geschlossen ist, werden die Nachrichten über die Apple Push Notification Services gesendet. Die WA-Server halten dann eine Socket-Verbindung mit den APNS-Servern und diese übermitteln die Pushs auf das Mobilgerät. Insgesamt ist das noch etwas komplexer, aber das ist es simpel gesagt.

Übrigens vermute ich, dass Whatsapp die Nachrichten nicht persistent auf seinen Servern speichert. Ich denke kurze Zeit nach der Übermittlung werden die serverseitig gelöscht.
 
Ich würde mit dir wetten, dass die Nachrichten auf den Servern bleiben. Sogar wenn sie das Gegenteil behaupten würden.
 
Weil sie geil auf die Daten sind? Ich glaube bei der Menge an Daten lohnt sich das aus Kosten/Nutzen Hinsicht nicht.
 
Werbung:
Weil sie geil auf die Daten sind? Ich glaube bei der Menge an Daten lohnt sich das aus Kosten/Nutzen Hinsicht nicht.

Ich will das pauschal auch nicht unterstellen, aber Speicherplatz ist ja wohl heute in Hinblick auf das Geld kein limitierender Faktor mehr.
 
Ich will das pauschal auch nicht unterstellen, aber Speicherplatz ist ja wohl heute in Hinblick auf das Geld kein limitierender Faktor mehr.
Damit hast du vermutlich recht.

Ich glaube mit den Daten ist dennoch nicht viel anzufangen. Zwischen Android-Geräten wird mittlerweile AFAIK Ende-zu-Ende verschlüsselt und auf iOS werden sie damit wohl demnächst nachziehen. Dann hätten sie nur noch Blubb auf ihren Servern liegen.
 
Ich glaube mit den Daten ist dennoch nicht viel anzufangen. Zwischen Android-Geräten wird mittlerweile AFAIK Ende-zu-Ende verschlüsselt und auf iOS werden sie damit wohl demnächst nachziehen. Dann hätten sie nur noch Blubb auf ihren Servern liegen.

Auch aus Metadaten kann man vermutlich einiges rausziehen, schätze ich.
 
Werbung:
Wenn die Daten im internen Speicher abgelegt werden, die erfolgt dann der Abgleich mit den neuen Nachrichten?
Nur durch den Vergleich der Anzahl an Nachrichten, bspw.
intern 41, auf Server 43, ergo 2 Neue?

Oder vielleicht durch das Datum:
letzter Abgleich 07.04.2015 12:43:05 - 41
letzte Änderung 07.04.2015 12:45:12 - 43?

Schon ein bisschen her, aber mir ist zu dem Thema gerade noch etwas eingefallen.

So ein Abgleich kann im Prinzip durch recht einfache Integritätsprüfungen initialisiert werden.

Ganz einfaches Beispiel: Die clientseitige App nehme die letzten fünf empfangenen Nachrichten, betrachte sie als ganzzahlige Zahl, rechne sie modulo 97 und sende sie an den Server. Der Server macht das selbe mit den letzten fünf Nachrichten die für seinen Client bestimmt sind und vergleicht beide Ergebnisse. Sind diese unterschiedlich, weiß er, dass noch einige Nachrichten gesynct werden müssen und eine aufwändigere Prüfung wie mit TimeStamps, IDs, temporäre Token, Hashes, ... kann durchgeführt werden.

Die Zahl 97 ist eher willkürlich gewählt. In der Kryptografie basieren digitale Signaturverfahren (DSA) mit unter auf diesem Prinzip. Es sollte eine Primzahl verwendet werden. 97 ist übrigens im SEPA-System die verwendete Modulo-Konstante, um IBANs auf ihre Integrität zu prüfen.

Auch wenn ich nicht glaube, dass beim Sync in Whatsapp solch ein Verfahren genutzt wird, ist es ein enorm simples und schnelles Verfahren und es ist vielleicht ganz interessant davon gehört zu haben. Die Mathematik hält oft Lösungen bereit auf die man mit Informatik-Logik nicht drauf käme.

Timestamp- oder 'Count'-Lösungen hielte ich persönlich für zu ungenau. Gerade in bspw. Gruppen gehen ja doch gerne mal mehrere Nachrichten pro Sekunde durch die Leitungen, was zu Aussetzern im System führen könnte. Idee wäre eine geteilte Nachrichten-ID, die sowohl Server als auch Clients bekannt ist/wird. Der Client gibt dem Server Bescheid, welche Nachrichten er bekommen hat und merkt sich diese entsprechend (flaggt sie), sodass er diese in Zukunft nicht mehr sendet.
 
Interessant. Von Modulo 97 hatte ich noch nie etwas gehört.
Interessant finde ich auch die geteilte ID. Im Prinzip müsste der Client für jede Gruppe nur die jeweils größte ID senden.
Was meinst du genau, mit "(flaggt sie)"?
 
Werbung:
Zurück
Oben