Sinkroniseerimisprotokolli
Räägitakse, et „swarm chat“ pakub iga seadme jaoks uusi võimalusi. Nüüd on võimalik seadmete vahelist ajalugu sünkroneerida, jagades sellega seotud hoiukesi.
Swarm disainidokument määratleb palju stsenaariumid, kuid see ei tähenda, et samade kasutajate seadmete vahelised vestlused sünkroniseeritakse.
Vana meetod
Ta ei saanud kasutada seda, sest kõik väärtused ei tohi ületada 64k, mitte konverteed ei saadetud seadme sünkronaatsides ega liikmete profiilides, sest see on liiga raske.
Vanas meetodis kuulab daemon „inbox:DEVICE_ID“ DeviceSync väärtuste kohta, mis sisaldab sinkroniseerimiseks vajalikku kontaktlista (vt AccountManager::startSync()
);
Märkus
The current DeviceSync value present on the DHT is deprecated with this draft.
Uus meetod
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).
See on stsenaarium, mida kasutatakse sünkroneerimiseks:
When the device (A) goes online, it announces its presence via a DeviceAnnouncement like the OldMethod.
Teised seadmed (!A) avaldavad selle teate ja paluvad sellele seadmele ConnectionManager kaudu avada uus kanaal nimega „sync://DEVICE_ID_A“. (Linnutus: A saab teate teistest seadmetest, nii et ta palub ka sünkroneerimiskanaleid).
Kui see kanaal avatakse, saadab kanalit küsitav seadme DeviceSync (vt järgmine osa) väärtus, mis sisaldab teadaolevaid vestlusi ja kontakte.
A kontrollib DeviceSync väärtust ja:
Kui see tuvastas eemaldatud kontakte, eemaldage kontakte.
Lisada kontakte, kui see märgib lisatud kontakte
Võtke konvertssioonid välja, kui see märgib eemaldatud konvertssioone
Lisage vestlused, kui see märgib lisatud vestlusi
Võta konverentsite taotlused ära, kui taotlus on vastuvõetud (nüüd on kõnelused) / keeldunud
Lisage vestluse taotlused, kui nad avastatakse
Märkus
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).
Seadme sünkroneerimine
See väärtus on JSON, mis sisaldab:
{
"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:[] } /* ... */
],
}
Kasutaja lugusid
Sinkroniseerimine seadme lisamise ajal
Alice loob vestluse
(valimine) Alice lisada mõned sõnumid
Alice lisab veel ühe seadme
Teine seadme peaks saama ja sinkroniseerima eelnevalt loodud vestlus
Sinkroniseerimine seadme ühendamisel
Alice loob vestluse
(valimine) Alice lisada mõned sõnumid
Alice ühendas teise seadme
Teine seadme peaks saama ja sinkroniseerima eelnevalt loodud vestlus
Mitme seadme vaheline sünkroneerimine
Alice sai kaks seadet.
Alice loob vestluse
Teine seadme peaks saama ja sinkroniseerima ühe seadme kaudu loodud vestlust
Uute taotluste tuvastamiseks sünkroneerimine
Alice saab vestlusnõue
Alice lisada uus seadme
Teine seadme peaks võtma nõuded seadmest A
Sinkroniseerimine vastuvõetud taotluste jaoks
Alice’il on kaks seadet.
Alice võtab vastu vestlusnõue
Teine seadme peaks tuvastama nõutud taotlust
Sinkroniseerimine nõuded tagasi lükata
Alice’il on kaks seadet.
Alice keeldub kõne taotlusest
Teine seadme peaks vastama keeldunud taotlusele
Praegune rakendamine
gerrit#15584 rakendatakse seda lehekülge