A mérnök blogjának jelentése a jabber (xep-0184 üzenet kézbesítési bizonylata)

Jelentés az üzenetek jabberre történő kézbesítéséről (XEP-0184: Message Delivery Receipts)

Ma egy kolléga panaszkodott a probléma az üzenetek elvesztése a jabber. Néhány felhasználó kapcsolódik a vállalati hálózathoz az OpenVPN segítségével, különböző minőségű internetcsatornákon keresztül. Ha az ügyfél megszakadta az OpenVPN kapcsolat normális működését, akkor a két percig terjedő jabber-kiszolgáló (ejabberd) üzenetet küldhet "ürességre". Az üzenetvesztés logikája érthetetlen nekem. A TCP-t az üzenetek átadásához használják. Ebben az esetben a kiszolgálónak tudnia kell, hogy az üzenet nem elég, de nem illik az offline tárhelybe, de egyszerűen törlődik.







Amikor először találkoztam ezzel a problémával, az első impulzus az OpenVPN és az ejabberd beállításainak megfordítása volt, de néhány lekérdezés után a Google más módon talált.

Ez abban áll, hogy értesítést küld a szállított üzenetekről a jabber kliensben. Ez a szolgáltatás az XEPP-protokoll XEP-0184 kiterjesztésként működött. Jelenleg az XEP-0184-et szabványnak tervezték, de sok ügyfél számára támogatja. Szomorú, hogy Psi. amelyet a legtöbb felhasználó használ, nem támogatja ezt a protokoll-kiterjesztést.

További googling vezetett a Psi + projekt oldalához. amely a Psi javítások készletének kidolgozásaként működik, és már tartalmaz támogatást az üzenet kézbesítési jelentésekhez (XEP-0184: Message Delivery Receipts). A Psi + támogatja a konfiguráció importálását a Psi-ból, így a Psi üzenetek története és listája elérhető lesz az új kliensben.

Ellentétben a legtöbb kollégája, azt használja pidgin kliensként jabber (felül kör azt kell használni ICQ és a Yahoo) mellett Szeretem pidgin tárolására a történelem üzenetek egyszerű szöveges (gerenda hasmenés alkotók skype és Miranda), amit szintén Szinkronizálom minden olyan számítógépet, ahol dolgoznom kell.

Miközben a Psi helyettesítésére kerestem, navigáltam egy pidgin jegyet a hibakeresőben. amelyben Ferdinand Stehle (noonien) linket adott a pidgin-xmpp-receipts dugóhoz. amely támogatja az XEP-0184-et a pidginben. Pár perc volt elég ahhoz, hogy összeállítsa a Debian Squeeze bővítményét (elég legyen a csomag felhelyezése a pidgin-dev-hez), és aktiválja azt a hírnökben.







Tesztelésére támogatási értesítéseket telepítettem a legfrissebb elérhető kiadás Psi + (bor a legújabb verzióját a Debian Squeeze / ziháló is találhatók a tárolók), és megkezdte a szerver egy adott felhasználó. Amikor egy üzenetet küld a pidgin-ből a psi + -ra, akkor a pidgin chat ablakban megjelenik egy kézbesítési jel # 10003; de ha üzenetet akar küldeni az ügyfél támogatása nélkül XEP-0184, hogy a pipa hiányzik. Minden csodálatos, de van egy ellentmondás - ha úgy tesznek, mintha a „hálózati hiba” a psi + és küldjön több üzenetet egyszerre, helyreállítása után a hálózat teljesítményét psi + in pidgin jelek jelennek meg, de nem előtte állások, és a tömeg az utolsó sor után.

Aztán elküldtem üzeneteket a psi + -ból a pidgin-hez, aztán csalódtam - az üzenetek történetéből nem világos, hogy hol érkezik az üzenet, és hol nem. A legutóbbi intézkedésként megmérgeztem az üzenetet a psi + -ról egy másik psi + -ra, és akkor volt különbség - ha az üzenetet eljuttattuk, akkor a psi + chat nyíl színe rózsaszínről zöldre változik. Kiderül, amikor a psi + -tól a pidginig küld üzenetet, az első úgy gondolja, hogy minden üzenet elveszett, és az ellenkező irányba működik.

Úgy tűnik, volt egy hiba, de közülük még mindig nem tisztázott. A felvilágosodás a fej mentem főzött magam egy kávét, nyitott egy dokumentumot, amely leírja a XEP-0184, hogy aktiválja a konzol hibakeresés pidgin és psi + és elkezdte nézni a különbség egy üzenetet küld a psi + in pidgin és az ellenkező irányba.

Néhány tesztüzenet után észlelhető volt a szállítási jelentés különbsége, amelyet a psi + és a pidgin okozott. A Psi + válaszol


Pajgin válaszol


Kiderül, hogy rámutatnak arra a helyes azonosítóra, amelyre a visszaigazolást küldik, de mutassák be a különböző helyeken. Ismét megnyitom az XEP-0184 leírását és látom. hogy a helyes megerősítést a pidgin állítja elő. Különös, a psi + támogatás ez a bővülés meg viszonylag hosszú ideig, és ha ez egy hiba, ez már meg kellett volna javítani. További gondolatok elvezet az időben támogatott XEP-0184 megjelent psi + legkorábban pidgin, akkor talán csak észre a különféle változatokat, szabványos (sőt, ő még mindig a fejlesztési szakaszban).

Megnézem a bővítési leírás korábbi változatait, és látom, hogy igazam volt. A Psi + a v1.0 verzió szerint reagál. és a pidgin válasz megfelel a v1.2 utolsó módosításának. És pidgin megismételte egy korábbi megerősítést.

Felmászok a pitgin-xmpp-reciepek plugin kódjába, és megnézem, hogy a megerősítési formátuma megváltoztatható-e egy olyan értékre, amely érthető a psi + -ra. Amint kiderült, ez nem nehéz, csak változtasd meg a helyet ugyanabban a sorban, ahol id van megadva.


Miután a plugint összeállította a javítással, az értesítések mindkét irányban elkezdtek dolgozni. Én egy kicsit módosított a tapaszt az ügyfeleknek, akik számíthatnak az új verzió képes érzékelni, hogy helyesen - az utolsó érintés volt a „hibridizáció” változatban a szabvány.


Ezzel a javítással semmi sem esett le, bár a tapasz mankó. Ahhoz, hogy véglegesítsük a megoldást a probléma XEP-0184 támogatása a pidgin, én összeállított egy csomagot a Debian. Telepíthető az adattárból.