Как подключить XMPP-сервер Bosh с помощью библиотеки Java Smack?
У меня работает клиент xmpp на webapp с использованием strophe.js, в соответствии с моим сценарием использования я должен быстро переключаться на разные страницы
Текущий подход небезопасен, так как jid и пароль видны в java-скрипте, я нашел способ обойти защиту в strophe клиенте, пытаясь сократить время соединения (с помощью bosh), в то время как изучал книгу «Программирование XMPP с использованием JavaScript и jQuery », Джейк Моффитт (Jake Moffitt). Я натолкнулся на одно решение, элемент которого для обеих моих вышеуказанных проблем заключается в реализации механизма сессии. Он говорит, что мы можем использовать strophe attach (jid, sid, rid) для подключения к существующему соединению, поэтому мне нужны SID и RID , который я могу получить с сервера приложений !!!
Книга привела пример автоматического подключения к серверу Bosh, когда пользователь вошел в веб-приложение, автор реализовал его, используя проект Django в Python. Поскольку я использую Java в качестве языка на стороне сервера, я попытался реализовать тот же пример, используя Java SMCAK-4.0. .3 и smack-bosh-4.0.3, но не удается подключиться к серверу bosh (я использую ejabberd в качестве сервера xmpp)
мой код как ниже
BOSHConfiguration config = new BOSHConfiguration(false,"192.168.0.106",5280,"/http-bind/","192.168.0.106");
XMPPBOSHConnection xbc=new XMPPBOSHConnection(config);
xbc.connect();
xbc.login("admin", "admin");
System.out.println(xbc.getConnectionID());
трассировки стека
java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserFactory
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at org.jivesoftware.smack.SmackConfiguration.processConfigFile(SmackConfiguration.java:352)
at org.jivesoftware.smack.SmackConfiguration.processConfigFile(SmackConfiguration.java:347)
at org.jivesoftware.smack.SmackConfiguration.<clinit>(SmackConfiguration.java:155)
at org.jivesoftware.smack.ConnectionConfiguration.<init>(ConnectionConfiguration.java:67)
Когда я пытался войти на сервер bosh, он каждый раз терпел неудачу, я не уверен, что здесь не так, может кто-нибудь объяснить мне?
Еще одна вещь, которую я нашел, это то, что можно получить идентификатор сеанса (SID), используя «xbc.getConnectionID ()», но как найти идентификатор запроса?
Любая помощь по вышеуказанной проблеме будет ощутимой !!!!
заранее спасибо!