Dokumentációs távirat-szolgáltatás üzenetek üzenetek
átvételi elismervény
A szerver általában nyugtázza az üzenetet a kliens (általában - RPC-kérés) keresztül RPC-válasz. Ha a válasz nem sokáig, a kiszolgáló először küldhet átvételi elismervényt, és egy idő után -, hogy az RPC választ.
Az ügyfél általában nyugtázza az üzenetet a szerver (általában - RPC-válasz), hozzátéve, megerősítés a következő RPC-kérés, ha kissé későn küldték (például, ha felmerül belül 60-120 másodperccel, miután megkapta az üzenetet a szerver). Azonban, ha hosszú ideig nincs ok arra, hogy üzeneteket küldeni a szerver, vagy ha nem ismert a szerverről érkező üzenetek, ez lesz a sok (mondjuk 16-nál nagyobb), az ügyfél küld egy visszaigazolást önmagában.
Közlemény az üzenet figyelmen kívül hagyása
Bizonyos esetekben a szerver értesíti az ügyfelet, hogy a küldött nekik egy üzenetet figyelmen kívül hagyta az egyik vagy másik ok miatt. Megjegyezzük, hogy az ilyen értesítés állítható elő, ha az üzenet nem lett helyesen dekódolni a szerveren.
Itt hibakód vehet, ideértve a következő értékeket:
- 16 - túl kicsi msg_id (valószínűleg a kliens a rossz idő, akkor van értelme, hogy tartsa szinkronban segítségével MSG_ID értesítések és küldje el újra az eredeti üzenetet a „jobb» msg_id, vagy csavarja be egy tartály új MSG_ID, ha az eredeti üzenet túl hosszú várakozási send kliens)
- 17 - túl nagy msg_id (az előző esetben: meg kell szinkronizálni az időt a kliens és küldje el újra az üzenetet a megfelelő msg_id)
- 18 - az alsó két bitje hibás msg_id (szerver elvárja osztva 4 MSG_ID kliens üzenetét)
- 19 - msg_id konténer egybeesett MSG_ID korábban kapott üzenet (ezt soha nem lehet)
- 20 - az üzenet túl öreg, és lehetetlen ellenőrizni, hogy a szerver megkapja az üzenetet msg_id vagy sem
- 32 - túl kicsi msg_seqno (szerver üzenetet már készül kevésbé msg_id de seqno, akár azonos furcsa.)
- 33 - túl nagy msg_seqno (hasonló: van egy üzenet, egy nagy msg_id de kevésbé seqno, akár azonos furcsa.)
- 34 - várhatóan még msg_seqno (jelentéktelen üzenet) érkezett, páratlan
- 35 - várják a páratlan msg_seqno (szignifikáns üzenet) érkezett, még
- 48 - rossz sót szerver (ebben az esetben küld a helyes válasz bad_server_salt sót kell újra elküldeni az üzenetet it)
- 64 - a rossz tartályba.
Mint fogant, az értékek szerint vannak csoportosítva ERROR_CODE (ERROR_CODE >> 4): például, 0x40..0x4f kódok megfelelnek a hibát az elemzés tartályban.
Értesítések figyelmen kívül hagyja az üzenetet nem kell megerősíteni (azaz nem szignifikáns).
Fontos: Ha a szerver megváltozott server_salt. vagy ha az ügyfél a rossz időben, minden kérés érkezik bejelentés a fenti típusú. Az ügyfélnek ellenőriznie kell, hogy valóban a közelmúltban küldött egy üzenetet, hogy a megadott MSG_ID, és ha igen -, hogy frissítse idején a módosítás (a különbség a szerver és a kliens óra) és a szerver sója alapján MSG_ID és server_salt értesítést kell használni (újra) küldő jövő üzeneteket. Ebben az esetben az eredeti üzenetet (azaz, amelyhez olyan hibaüzenetet bejelentés) is meg kell újra elküldeni több megfelelő msg_id és / vagy server_salt.
Ezen túlmenően, a kliens frissítheti az értéket server_salt. használt üzenetek elküldéséhez a szerverre, értékek alapján RPC-reakciók vagy a tárolókban RPC-válasz, azzal a megkötéssel, hogy ez az RPC-válasz igazán illeszkedik a közelmúltban elküldött kérés. (Kétség esetén jobb nem frissíteni, mivel fennáll a veszélye a visszajátszás-támadás.)
Tájékoztatást kérhet az állapotüzenetre
Ha az egyik fél hosszú ideig nem kap információt az elküldött üzeneteket, ő lehet kérni, hogy a másik oldalról:
A kérelem nyomán a következő információkat tartalmazza:
Adjon információt üzenet állapotát
Itt req_msg_id - ID msgs_state_req kérelmet. info - egy string, hogy minden elküldött üzenet msg_ids lista tartalmazza pontosan egy byte állapotüzenetekkel:
- 1 = Az üzenet nem ismert (msg_id túl kicsi, az ellenkező oldalon lehet elfelejteni)
- 2 = üzenet nem érkezett (msg_id tartományban tárolt azonosítók, de az ellenkező oldalon egy ilyen üzenet nem érkezett pontosan)
- 3 = üzenet érkezett (msg_id túl nagy, a szemközti oldalon még nem volt pontosan)
- 4 = üzenet érkezett (megjegyzendő, hogy ez a válasz a nyugtát egyidejűleg)
- +8 = az üzenetet már elküldte a megerősítő
- +16 = az üzenet nem igényel megerősítést
- += 32 már elkészült vagy RPC-kérés feldolgozása üzenetben szereplő
- +64 = egy értelmes választ is létrejött
- +128 = a másik oldalon tudja, hogy az üzenet meg is érkezett
Ez a válasz nem igényel megerősítést. Önmagában ez a bizonyíték arra, hogy a megfelelő msgs_state_req.
Önkéntes adatszolgáltatás státusz üzenetek
Bármelyik fél önként tájékoztatja a másik felet a status által küldött üzenetek a másik félnek.
Felsorolja az összes üzenet kódok ismert, hogy a mellékhatások, kivéve azokat, amelyek esetében a jelző 128 vagy 16. Azonban, ha a zászló 32, de nem 64, az állapota az üzenet továbbra is meg kell küldeni.
Ez az üzenet nem kell megerősíteni.
Kiterjesztett önkéntes feltételekkel kapcsolatos információkat egy üzenet
Általában a szerver által használt reagálni visszavásárolná msg_id üzenetét. különösen akkor, ha ez az üzenet keletkezett válasz, és ezt a választ nagy. Ha a válasz kicsi, a szerver helyett ismételje meg a választ is.
A második lehetőség használják értesítés üzeneteket hoztak létre a kiszolgálón eredményeként az RPC-kérés (pl értesítést az új üzenetek) küldtek az ügyfél néhány évvel ezelőtt, de ők nem kapott megerősítést.
Ez az üzenet nem kell megerősíteni.
Kifejezett kérésére újraadáshoz üzenetek
Válaszul a távoli fél azonnal újból elküldeni a kért üzenetek általában ugyanazt a kapcsolatot, amelyen a kérelem érkezett. Ha az üzenet a kért msg_id hiányzik vagy már feledésbe merült, vagy ha küld a kérelmező fél (ami érthető, paritás) az ilyen választ küld msg_id MsgsStateInfo.