【发布时间】:2014-10-12 15:26:37
【问题描述】:
我有使用 strophe.js 在 webapp 上工作的 xmpp 客户端,根据我的用例场景,我必须快速切换到不同的页面
当前方法不安全,因为 jid 和密码在 java 脚本中可见,我正在寻找解决方法以在 strophe 客户端中实现安全性,并尝试缩短连接时间(使用 bosh),同时阅读“XMPP 编程”一书使用 JavaScript 和 jQuery”by jake moffitt 我遇到了一个解决方案,我的上述两个问题都是实现会话机制。它说我们可以使用 strophe attach(jid,sid,rid) 连接到现有连接,所以我需要SID 和 RID,我可以从应用服务器获取!!!
本书给出了用户登录 Web 应用程序时自动连接到 bosh 服务器的示例,作者使用 python 中的 Django 项目实现了它,因为我使用 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 服务器时,每次都失败,我不确定这里出了什么问题,有人可以解释一下吗?
我发现的另一件事是可以使用“xbc.getConnectionID()”获取会话标识符(SID),但如何找到请求标识符?
对上述问题的任何帮助都将是可观的!!!!
提前致谢!
【问题讨论】: