Synchronizačný protokol
Svoj časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový časový
Mnoho scenárov je definovaných v návrhovom dokumente Swarm, ale to neznamená synchronizáciu konverzácií medzi zariadeniami pre rovnakého používateľa.
Stará metóda
Synchronizácia zariadení bola vykonaná prostredníctvom DHT. Pretože každá hodnota MUSI prekročiť 64k, konverzácie neboli odoslané v synchronizácii zariadení, ani profily členov, pretože je príliš ťažké.
V starom spôsobe je daemon počúvajúci na „inbox:DEVICE_ID“ pre hodnoty DeviceSync, ktorý obsahuje zoznam kontaktov, ktoré sa majú synchronizovať (pozri AccountManager::startSync()
);
Poznámka
The current DeviceSync value present on the DHT is deprecated with this draft.
Nová metóda
Since Jami has the ConnectionManager, using p2p socket is possible to perform sync quickly with big values (cause the socket is not limited in data).
Toto je scenár, ktorý sa používa na synchronizáciu:
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
Iné zariadenia (!A) detektujú oznámenie a budú požiadať toto zariadenie prostredníctvom ConnectionManager, aby otvorilo nový kanál s názvom „sync://DEVICE_ID_A“. (Poznámka: A dostane oznámenie z iných zariadení, takže bude požiadať o synchronizovacie kanály tiež).
Hneď ako je tento kanál otvorený, zariadenie, ktoré sa na tento kanál pýta, zasiela hodnotu DeviceSync (pozri ďalšiu časť), ktorá obsahuje jeho známe konverzácie a kontakty.
A skontroluje hodnotu DeviceSync a:
Odstránenie kontaktov, ak detektuje odstránené kontakty
Pridať kontakty, ak detektuje pridané kontakty
Odstráňte konverzácie, ak zistí odstránené konverzácie
Pridať konverzácie, ak detektuje pridané konverzácie
Odstrániť žiadosti konverzácie, ak je žiadosť prijatá (v súčasnosti v konverzáciách) / odmietnutá
Pridajte žiadosti konverzácie, ak je zistená
Poznámka
If A detects new conversations, it will asks the device which announced that conversation to clone the repository through a git channel (so like described in Swarm chat design).
Synchronizácia zariadenia
Táto hodnota je JSON obsahujúci:
{
"contacts": [/* Contacts (TODO) */],
"conversation": [
{ "id":"convID", "created":"<TIMESTAMP>", "removed":"<OPTIONAL_TIMESTAMP>" },
{ "id":"convID2", "created":"<TIMESTAMP2>", "removed":"<OPTIONAL_TIMESTAMP2>" }
/* ... */
],
"conversationsRequests": [
{ "id":"convID", "received":"<TIMESTAMP>", "declined":"<OPTIONAL_TIMESTAMP>",
"members":[], "metadatas":[] },
{ "id":"convID2", "received":"<TIMESTAMP2>", "declined":"<OPTIONAL_TIMESTAMP2>",
"members":[], "metadatas":[] }
/* ... */
],
}
Príbehy používateľov
Synchronizácia pri pridaní zariadenia
Alice vytvára rozhovor
(Vybórne) Alice pridať nejaké správy
Alice pridá ďalšie zariadenie
Druhé zariadenie by malo prijímať a synchronizovať predtým vytvorený rozhovor
Synchronizácia pri pripojení zariadenia
Alice vytvára rozhovor
(Vybórne) Alice pridať nejaké správy
Alice pripojí ďalší zariadenie
Druhé zariadenie by malo prijímať a synchronizovať predtým vytvorený rozhovor
Synchronizácia medzi viacerými zariadeniami
Alice má 2 zariadenia.
Alice vytvára rozhovor
Druhé zariadenie by malo prijímať a synchronizovať konverzáciu vytvorenú na jednom z zariadení
Synchronizácia na odhaľovanie nových požiadaviek
Alice dostane žiadosť o rozhovor
Alice pridať nové zariadenie
Druhé zariadenie by malo získať žiadosti z zariadenia A
Synchronizácia pri prijatých žiadostiach
Alice má 2 zariadenia.
Alice prijme žiadosť o rozhovor
Druhé zariadenie by malo odhaliť prijatú žiadosť
Synchronizácia žiadostí o odmietnutie
Alice má 2 zariadenia.
Alice odmietne žiadosť o rozhovor
Druhé zariadenie by malo odhaliť odmietnutiu žiadosti
Aktuálne vykonávanie
gerrit#15584 vykonáva túto stránku