在此记下我做这个项目的过程,遇到的难点和问题。
OK,项目开始问题当然是怎么去开发。
在初步了解XMPP是一个协议就可以知道这个开源的协议会有很多实现,无论是服务端还是客户端。所有软件基于XMPP来编写,就是面向接口编程的思想。
整个项目的架构如下:
服务端:直接使用Openfire服务器,这个服务器很简便,基本把许多功能都实现了,而且安装简便。开发客户端基本上不会接触服务端的代码。
客户端:开发也应该比较简单,因为会使用Smack API。Smack项目是实现Xmpp协议的开源项目,客户端使用Smack API就可以快速开发出来了。
很明显,XMPP是使用C/S模式的。
步骤1:搭建服务器环境(笔者走到这一步用了2天,包括了解XMPP)
(从这里下载 http://www.igniterealtime.org/)
1、下载Openfire并安装。配置比较简单,注意一下进入服务器的地址的端口(9090),另外一个重要端口是5222,这个是客户端与服务器通信的端口。
2、下载Spark(不要下载Web版,因为要用Tomcat才能使用)(Spark是开源的PC客户端,用来测试Openfire服务器是否正常,因为正常了开发客户端才方便嘛),Spark的配置也是很简单,注意登录时配置好地址和端口就好了。
3、创建用户,尝试通信。基本上是可以的啦。OK,那就可以继续开发了。
步骤2:Android环境配置(加入Smack API)(这个够玩半天了)
1、下载Smack(从这里下载 http://www.igniterealtime.org/)
2、将jar包加入到IDE。(最好所有包都导入,)我是用Android Studio,导入比较蛋疼,是将jar包复制粘贴到module的libs文件夹下。然后在Android Studio里选择所以jar包,右击选择Add as library。(这是Android Studio引入第三方库的方法,注意不是引入开源项目,当然也不是唯一的方法)
3、下载 jxmpp 的jar包并导入。注意,要下载与Smack相同的版本。(下载地址大家上去Github找,我当时也找得比较久,忘记了地址)(这个包比较重要,因为smack包中的类会调用这个包的类,其实我也比较奇怪为什么不放到smack包中)
4、阅读文档,文档在已下载的文件夹/releasedocs/documentation/。对Smack API先有个大概的了解。