Java领域的即时通信解决方案可以考虑基于xmpp协议的openfire+smack+spark来实现,都是开源的。最近一直在研究这个,也做了一个简单的Android即时聊天客户端,支持文本、图片、语音消息。
Demo地址请见此系列文章最后一篇
XMPP协议
大家自行到百度google上去补脑吧。
openfire、smack、spark
- openfire是基于XMPP 协议的即时通信的服务器端的一个实现,如果你要实现一个简单的点对点通信或是简单的群聊,你完全可以使用该服务openfire本身提供的服务而不需要编写一行服务端的代码,非常方便。同时openfire还支持插件的扩展,如果你需要丰富增加服务端的功能,你可以基于openfire进行插件二次开发,或者直接修改openfire的源码实现。
- smack是XMPP传输协议的Java实现,提供了一套API接口(类似于JDK中的HttpUrlConnection提供Http连接请求),它是连接openfire服务、发送通信信息的桥梁。
- spark是基于smack实现的一个XMPP即时通信客户端(PC端的),spark貌似也是可以进行插件扩展的。
官网:http://www.igniterealtime.org/,我目前用的都是最新版本的openfire3.10.2,smack4.1.4
在smack4.1版本之前,smack本身是不支持Android平台的,不过当时有一个替代品asmack,github地址:https://github.com/flowdalic/asmack,在smack4.1之前我们可以通过asmack来配合openfire来实现Android端的即时通信应用,asmack和smack貌似api都差不多(我没看过asmack)。smack4.1之后就开始支持Android平台了,所以现在可以放弃asmack了。Windows下的Openfire安装部署
去官网上下载最新的Openfire安装包,我下载的是不包含JDK的压缩包(Does not include Java JRE),解压就可以用了,前提是你已经装了JDK了,而且JDK版本必须是1.7或以上的版本,Openfire不支持JDK6,解压之后在Openfire的根目录bin目录下执行openfire.exe即可,启动之后如下图
在启动服务配置之前,先在你的数据库中创建一个名为openfire的数据库(支持多种数据库),点击图中的Launch Admin即会在浏览器上打开Openfire的配置界面,如下图:
上图中选择简体中文,然后继续:
上图中配置域,最好配置为你的服务器ip地址或者是域名,其他的默认不管,然后继续:
上图中选择标准数据库连接,继续:
上图中选择你的数据库类型,然后在数据库URL中填写正确的连接字符串,再填上你的数据库用户名和密码,然后继续
上图中直接默认选择初始设置,然后继续:
上图中填上管理员账户admin的邮件地址,然后填上该管理员账户的密码,然后继续:
到上图即表示你的Openfire服务安装配置完成,然后点击登录后进入到管理员登录界面:
Openfire默认的管理员账户为admin,秘密即为上面你设置的密码,登录成功之后,你可以通过这个Openfire管理平台管理该服务商所有的账户信息,服务器信息等。
Linux环境下Openfire的安装部署
在官网上下载最新的源码安装包(如: openfire_3_10_2.tar.gz ),我选择的也是不包含jdk的源码安装包,将该包上传至服务器某个目录下,在该目录下执行命令 tar -zxvf openfire_3_10_2.tar.gz,解压完成后切换到Openfire/bin目录下执行命令: ./openfire start 启动Openfire服务,然后在你自己的pc机浏览器上打开http://服务器ip:9090,即会进入Openfire的配置界面,前提是必须准备好一个数据库,配置过程与Windows下的配置过程一样,请参考上面的操作步骤。
OK,Openfire服务的安装配置就介绍完了,下面一篇我就开始介绍smack的用法。
write by laohu
2015-10-30 15:59:54
原创文章,转载请出处注明。
下面是我的个人公众号,欢迎关注交流