说明:简单记录调研过程,XMPP协议下即时通信工具的编译和使用时遇到的问题,服务端使用openfire,客户端使用Spark (Win)和Converse.js(Web端),安卓端使用的时Smack,此处没写安卓端,因为是其他人负责的:)
服务端openfire
编译过程参考IntelliJ IDEA openfire 使用IntelliJ IDEA 部署OPENFIRE 服务端
遇到的问题如下:
Error:(126, 39) java: 找不到符号
符号: 方法 getTimeStamp()
位置: 类型为org.apache.log4j.spi.LoggingEvent的变量 event
解决:项目中log4j.jar有多个,最先加载的是openfire\src\plugins,将其版本改为1.2.16即可。
Error:(159, 50) java: 找不到符号
符号: 方法 asBareJID()
位置: 类 org.xmpp.packet.JID
解决:项目中的tinder.jar为1.3.0-SNAPSHOT,将其替换为1.3.0即可
Error:(571, 21) java: 无法访问org.apache.tools.ant.Task
找不到org.apache.tools.ant.Task的类文件
解决:给openfire添加ant.jar
HTTP ERROR 500
Problem accessing /setup/index.jsp. Reason:
Server ErrorCaused by:
java.lang.NullPointerException at org.jivesoftware.admin.AdminConsole.getAppName(AdminConsole.java:105) at org.jivesoftware.openfire.admin.decorators.setup_jsp._jspService(setup_jsp.java:192) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ......
解决:把admin-sidebar.xml(在openfires\src\resources\jar目录中)复制到out或者make的相关目录下
中文乱码
解决:将openfire_i18n_zh_CN.properties从target复制到out上,或者直接将配置文件openfire_i18n_zh_CN.properties转码,执行
native2ascii openfire_i18n_zh_CN.properties.old openfire_i18n_zh_CN.properties
配置
参考Openfire 的安装和配置,下图为控制台访问路径的设置。

添加插件
可以参考 openfire插件开发,或者 跟我一步一步开发自己的Openfire插件
主要是在plugins目录下编写代码,在build下添加build.properties,然后执行ant plugin,会自动生成jar包。
#插件目录名
plugin=helloworld
客戶端
不同的客户端能接受消息,退出时也会通知其他客户端,但发送的消息不可见,如Spark和Converse.js。
如果想通过本地域名访问,可以在C:\Windows\System32\drivers\etc\hosts添加域名映射,即
#....
127.0.0.1 wang #配置控制台访问路径时设置的值
1.Spark
直接安装window的包,傻瓜式安装,关键在于登录时
XMPP即时通信工具调研及问题解决

本文档记录了在XMPP协议下,使用openfire作为服务端,Spark(Windows)和Converse.js(Web)作为客户端的即时通信调研过程。在openfire部署和使用中遇到的编译错误,如log4j和tinder.jar版本问题,以及HTTP 500错误的解决方案。同时,介绍了openfire的配置、插件添加和客户端的登录设置,探讨了跨客户端消息可见性问题。
最低0.47元/天 解锁文章
6896

被折叠的 条评论
为什么被折叠?



