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:

  1. When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.

  2. 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).

  3. 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.

  4. 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