Protokoll összehangolása
A szar chat új lehetőségeket kínál minden eszköz számára. Most lehetséges a készülékek közötti történelmet szinkronizálni a kapcsolódó tároló megosztásával. A készülékek szinkronizációját újrategírozni kell, hogy kövesse ezeket a változásokat.
A {doc}`Swarm tervezési dokumentumban számos forgatókönyv van meghatározva, de ez nem jelenti a különböző eszközök közötti beszélgetések szinkronizálását ugyanazon felhasználó számára.
A régi eljárás
A készülék szinkronizációját a DHT-en keresztül végezték. Mivel minden értéknek nem kell meghaladnia a 64k-ot, a beszélgetéseket nem küldték a készülék szinkronizációjában, és nem is küldték a tagprofilokat, mert túl nehéz. Ez egy probléma, és javítani kell.
A régi módszerben a daemon a „inbox:DEVICE_ID” -on hallgatja a DeviceSync értékeket, amely tartalmazza a szinkronizálandó kapcsolattartási listát (lásd AccountManager::startSync()
);
Megjegyzés
The current DeviceSync value present on the DHT is deprecated with this draft.
Új eljárás
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).
Ez a forgatókönyv a szinkronizációhoz:
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
Más eszközök (!A) észlelhetik ezt a bejelentést, és a ConnectionManager segítségével kérik ezt a készüléket, hogy kinyissák egy új csatornát, a „sync://DEVICE_ID_A” néven. (Megjegyzés: A más eszközöktől fog értesítést kapni, így a szinkronizációs csatornákra is kér).
Amint megnyitják ezt a csatornát, a csatornát kérő eszköz egy DeviceSync értéket küld (lásd a következő részt), amely tartalmazza a ismert beszélgetéseket és kapcsolattartásokat.
A ellenőrizze a DeviceSync értéket és:
Vedd el a kapcsolatokat, ha a kapcsolatok eltávolítását észleli.
Adjon hozzá kapcsolattartót, ha az adott kapcsolattartót észlel
Ha a telefon törölt beszélgetéseket észlel, törölje a beszélgetéseket
Adjon hozzá beszélgetéseket, ha észlelte a hozzáadott beszélgetéseket
A beszélgetés kéréseit eltávolítsák, ha a kérést elfogadják (most a beszélgetésekben) / nem fogadják el
Adja be a beszélgetés kéréseit, ha észlelték
Megjegyzés
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).
A készülék szinkronizációja
Ez a érték egy JSON, amely tartalmazza:
{
"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:[] } /* ... */
],
}
Használói történetek
A készülék hozzáadása esetén szinkronizáljuk
Alice beszélgetést teremt
(Nem kötelező) Alice hozzáad néhány üzenetet
Alice egy másik eszközt is hozzáadott.
A másik készüléknek fel kell kapnia és szinkronizálni kell a korábban létrehozott beszélgetést.
Szinkronizálódás a készülék csatlakoztatása során
Alice beszélgetést teremt
(Nem kötelező) Alice hozzáad néhány üzenetet
Alice csatlakoztat egy másik eszközt.
A másik készüléknek fel kell kapnia és szinkronizálni kell a korábban létrehozott beszélgetést.
Több eszköz közötti szinkronizáció
Alice két eszközt kapott.
Alice beszélgetést teremt
A másik készüléknek fel kell kapnia és szinkronizálni kell az egyik készülékben létrehozott beszélgetést.
Új kérések felderítése
Alice megkapja a beszélgetés kérését
Alice új készüléket hozott hozzá.
A másik eszköznek vissza kell vennie a kéréseket az A eszközből
A elfogadott kérések szinkronizálása
Alice-nek két eszköze van.
Alice elfogadja a beszélgetés kérését.
A másik eszköz fel kell érzékelni a elfogadott kérést
A visszautasítási kérelmek szinkronizálása
Alice-nek két eszköze van.
Alice elutasítja a beszélgetés kérését.
A másik eszköz fel kell tüntetnie a visszautasított kérést
Jelenlegi végrehajtás
gerrit#15584 végrehajtja ezt a oldalt