juick.com и juick.com А итог простой, методом пристального взгляда заметил, что для исходящего соединения в dialback-е перепутал from и to, поэтому исходящее соединение было к самому себе вместо удаленного сервера (отсюда и второе соединение от сервера), дальше происходил handshake с самим собой и сам себе отсылал <db:verify/>, на котором радостно падал. В остатке имеем порефакторный код, попутное исправление нескольких мелких ошибок, более-менее нормальное логирование и осознание собственной никчемности...
часть третья, заключительно-поучительная. В заключение к
juick.com Взял ejabberd вместо openfire, ничего не изменилось. В итоге у ежа два открытых исходящих соединения и одно входящее на другой хост. Картина такая же: ёж отправляет <db:result from="ej_server" to="myapp">secret</db:result>, приложение в ответ отправляет <db:verify xmlns:db="jabber:server:dialback" from="myapp" to="ej_server" id="someid">secret</db:verify>, и затем ёж возвращает эту же станзу, даже from и to не меняет местами. Описание namespace-а добавилось из-за баблера (пока не придумал, как убрать объявление).
В продолжение к
xmpp.rocks (или просто babbler, баблер). В целом она вполне себе неплохая, но есть у неё одна особенность, которая навевает грусть и печаль, а именно то, что автор очень сильно любит добавлять везде слово `final` и делать методы `private`. В итоге, когда делаешь всё по примерам, всё работает, шаг влево-вправо — начинается боль и страдание. Первый раз с таким столкнулся, когда потребовалось для external component слать presence в комнату от разных resource. Решилось дело тем, что пришлось скопировать 5 классов (не от наследоваться!) и в один метод добавить три строки. Также в бабблере есть заготовка под c2s на базе netty. Слов нет, кодеки и соединение работают вполне нормально. А даже его можно использовать для входящих s2s. Для исходящих понадобилось переопределить один метод (редкий случай, когда метод оказался `protected`, а класс не `final`). Но с ServerDialback уже боль и страдание, а именно отправить теги `db:result` и `db:verify` не получится, несмотря ни на какие манипуляции (в том числе и с jaxb). Там жестко захардкожен в `private static final` переменной список namespace-ов, для которых будет писаться префикс, и dialback-а среди них нет. При этом это всё лежит в классах в xmpp-core с видимостью package (не public). Если выносить все классы, чтобы сделать dialback по-человечески, то надо будет копировать уже порядка 6-10 классов. :( Грусть, пичаль. Хоть выкидывай бабблер.
Вот все жалуются, я тоже пожалуюсь. Есть такая библиотека
#2616811/5 написал и подумал "да ты со всех сторон мягкий..."
хотя... я усидчивый — вот моя сильная сторона!
хотя... я усидчивый — вот моя сильная сторона!
hotline.ua ЙОПТ! Клаву бы ему!!! Забрал бы и за 1.5k$!