ПредишенСледващото

Отчет за доставка на съобщения Jabber (XEP-0184: Приходи Съобщение за доставка)

Днес един колега се оплака за проблема със загубата на съобщенията в дрънкали. Някои от нашите потребители са свързани с корпоративната мрежа през OpenVPN, които работят през интернет канали с различно качество. Ако клиентът наруши нормалната работа на OpenVPN връзка, сървърът на Jabber (ние използваме ejabberd) около две минути можете да изпращате съобщения до "празнотата". Не мога да разбера логиката на загуба съобщение, защото за изпращане на съобщения, използвайки TCP. В този случай сървърът трябва да се знае, че съобщението е nedostavleno, но това не се вписва в съхранението на линия, а просто отстранени.

Когато за първи път срещат този проблем, първият импулс беше да се превърне корекция OpenVPN и ejabberd, но след няколко заявки към Google върна повече от един начин.

Той трябва да показва известия доставени съобщения до Jabber клиент. Тази функция е изпълнена като разширение на XMPP протокол XEP-0184. В момента XEP-0184 е обявен за проекта на стандарта, но подкрепата е в много клиенти. Тъжното е, че Psi. която използва по-голямата част от потребителите, той не поддържа това разширение протокол.

Допълнителни gugleniya доведоха до проект страница Psi + на. която е разработена като съвкупност от кръпки за Psi и вече съдържа подкрепа за докладите за изпратените съобщения (XEP-0184: разписки за съобщения за доставка). Psi + поддържа импортиране на конфигурацията на Psi, така че историята на съобщенията, както и списък на Psi ще бъде на разположение в новия клиент.

За разлика от повечето си колеги, аз използвам жаргон като клиент Jabber (в допълнение към Jabber ли е да използвам ICQ и Yahoo) в допълнение Обичам жаргон за съхраняване на историята на съобщенията в обикновен текст (греди диария създателите на Skype и Miranda), които и Аз синхронизирам всички компютри, където работят.

Търсейки заместител на Psi, naguglit в Pidgin Trac билет. в която Монтана Stehle (Нунийн) дава връзка към приставка жаргон-XMPP-квитанции. осъществява подкрепа за XEP-0184 в жаргон. Няколко минути е достатъчно за съставяне на приставката Debian Squeeze (за съставяне достатъчни за определяне на жаргон-Dev пакет) и да го активирате в Messenger.

За тестване на уведомления за подкрепа Инсталирах последната налична версия на Psi + Wine (вино за най-новата версия на Debian Squeeze / Уизи може да се намери в моите хранилища) и започна на сървъра конкретен потребител. Когато изпращате съобщение на жаргон в пси + в чат прозореца се появява жаргон доставка марки # 10003;. но ако изпратите съобщение до клиента, без подкрепа XEP-0184, че дадена марка липсва. Всичко е прекрасно, но има един протест - ако се прави на "мрежа неизправност" на пси + и да изпрати няколко съобщения наведнъж, след възстановяването на функционирането на мрежата в пси + в Pidgin марка се появи, но не и в предната част на мнения, а тълпа след последния ред.

По-нататък продължава да изпратите съобщение на пси + в жаргон и след това бях разочарован - от историята на съобщенията не разбира къде се доставя съобщението и къде не. Като последна мярка отровен съобщение на пси + пси + в друг, а след това има разлика - ако съобщението е доставено, цвета на стрелките в чат PSI + промени от розово до зелено. Оказва се, когато изпращате съобщения от пси + в жаргон, първо заяви, че всички съобщения са били загубени, но в обратна посока всичко работи.

Тя изглежда като бъг намери, но един от тях е все още неясно. За просвещението на главата Отидох себе сварено кафе, открит документ, който описва XEP-0184, за да активирате конзолата отстраняване на грешки в жаргон и пси + и започна да разгледаме разликата между изпращането на съобщение на пси + в жаргон и в обратната посока.

След няколко тестови съобщения се превърна в забележима разлика в отчетите за изпращане, които се генерират пси + и жаргон. Psi + е отговорен


А Pidgin е отговорен


Оказва се, че те показват правилния идентификационен номер, който се изпраща потвърждение, но посочи на различни места. Отново, аз отварям описанието на XEP-0184 и да видим. че правилното признание генерира точно жаргон. Странно, но в пси + подкрепа тази експанзия се появи сравнително дълъг период от време и ако това е грешка, той трябва вече да е била коригирана. По-нататъшни разсъждения ме водят до това време поддържа XEP-0184 се появява в пси + по-рано, отколкото в жаргон, тогава може би те просто осъзнават различните ревизии на стандарта (в действителност, той все още е в етап на развитие).

Отивам да гледам по-ранните описания редакция се разширяват и да видят, че съм бил прав. Psi + реагира според одит v1.0. и Pidgin отговор съответства на последна редакция v1.2. И Pidgin разградени потвърждават по-ранната версия.

Качвам в код щепсел Pidgin-XMPP-reciepts видим дали можете да промените формата си, за да потвърдите това, което ще стане ясно за пси +. Както се оказа, за да улесните достатъчно в един ред, за да промените мястото, където посочен идентификационен номер.


След съставянето на приставката с тази кръпка съобщения започнаха да работят и в двете посоки. Бях малко модифициран кръпка за клиенти, които могат да разчитат на новата версия може да го възприема правилно - финал беше на "хибридизация" версии на стандарта.


С тази кръпка не падне, въпреки че на пластира е патерица. За да финализираме решението на проблема с подкрепата на XEP-0184 в жаргон, аз подготви пакет за Debian. Можете да го инсталирате от моето хранилище.

Подкрепете проекта - споделете линка, благодаря!