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.