(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

时间:2021-05-14 12:50:52

主要包含4个章节:

1. Java 领域的即时通信的解决方案

2. 搭建 Openfire 服务器

3. 使用客户端测试我们搭建的 Openfire 服务器

4. Smack 和 ASmack

一、Java领域的即时通信的解决方案

Java领域的即时通信的解决方案可以考虑openfire+spark+smack。

1. Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前最新的版本为3.6.4,网上可以找到下载的源代码。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

2. 即时通信客户端可使用spark2.5.8,这个版本是目前最新的release版本,经过测试发现上一版本在视频支持。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

3. Smack是即时通信客户端编程库,可以使用smack的API向openfire注册用户发送消息,并且可以通过监听器获得此用户的应答消息,甚至可以做自动应答机器人,后门我们会用到该API。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

二、搭建Openfire服务器

2.1 准备工作:配置主机的域名

使用openfire需要配置机器的域名。打开C:\WINDOWS\system32\drivers\etc\hosts文件,增加一新行:127.0.0.1   im.comit.com.cn

其他机器使用域名访问openfire,也需要在C:\WINDOWS\system32\drivers\etc\hosts中指定
im.comit.com.cn对应的ip地址,例如我的局域网IP为192.168.0.177,则hosts文件中应增加一新行:
192.168.0.177 im.comit.com.cn

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

可以ping一下刚才的域名im.comit.com.cn,验证是否配置正确:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

2.2 准备工作:创建openfire运行所需的数据库

下载openfire:openfire需要java运行时,由于我的机器已经有了java开发环境,所以下载了免安装版的zip压缩包。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

下载完解压缩,我的目录是:D:\Technology\XMPP\openfire。

需要创建openfire运行所需的数据库:我电脑已经安装了的是Sqlserver 2005。打开D:\Technology\XMPP\openfire\resources\database目录:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

打开Microsoft SQL Server Management Studio创建数据库Openfire并运行openfire_sqlserver.sql的脚本:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

这里截取了一部分表。

由于openfire安装包并没有内置SqlServer的jdbc驱动,所以需要从网上下载sqljdbc.jar并拷贝至以下目录:D:\Technology\XMPP\openfire\lib。

2.3 开始安装openfire

表创建完毕之后、运行bin目录下的openfire.exe。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

选择Launch Admin打开管理员界面:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

选择简体中文,Continue下一步:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

输入2.1中配置的域名:im.comit.com.cn,端口默认。继续:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

这一步选择标准数据库,继续:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

选择SqlServer

驱动程序类输入:com.microsoft.sqlserver.jdbc.SQLServerDriver

数据库URL:jdbc:sqlserver://127.0.0.1;DatabaseName=Openfire

出入用户名sa,密码xxxxxx,其他默认。点击继续:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

选择“初始设置”,继续:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

这里顺便输入游戏号以及密码,说明:这一步是创建admin帐号,一定要记住密码。继续:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

系统提示openfire已经安装完成了。

在Microsoft SQL Server Management Studio ,打开表ofUser表,会看到刚才创建的admin帐号:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

这个时候不要点“登录到管理控制台”,登录肯定失败,需要切换到这个页面:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

点”stop”,然后点“start”,等重启动成功后点”Launch Admin”,进入登录页面:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

输入admin和刚才创建的密码,登录:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

从管理员界面,我们可以查看服务器名称:im.comit.com.cn ;并且可以管理用户组和用户:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

这里,通过管理界面插入一个test用户(那么该用户的jid为:teat@im.comit.com.cn,有关jid的定义在第二篇文章介绍XMPP协议时有介绍)。

到目前为止,openfire服务器基本搭建成功。

三、使用客户端测试我们搭建的openfire服务器

主要测试用例包括:连接openfire服务器、在客户端注册用户、在不同的基于XMPP协议的客户端进行添加好友请求以及发送即时消息。

1. Spark 客户端:与openfire同一个开源组织的基于XMPP协议的客户端

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

2. SparkWeb:基于Web的XMPP客户端

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

3. 如意通(Rooyee Message,国内公司开发的开源的基于XMPP、支持文件、音频、视频聊天、功能比较强悍的一款软件,下载地址:http://rooyee.biz/a/xiazaizhongxin/ruanjianxiazai/index.html

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

开始进行测试:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

安装openfire服务器时,我们创建了帐号test,现在我们使用Spark客户端申请一个帐号test2,注意服务器输入im.comit.com.cn。创建成功之后登录。

在Microsoft SQL Server Management Studio ,打开表ofUser表,会看到刚才创建的test2帐号:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

Rooyee Message的登录设置与Spark类似,我们使用test帐号登录Rooyee Message。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

2款软件都登录成功之后。使用Spark登录的test2 来向Rooyee Message登录的test 发送联系人添加请求。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

桌面右下角Rooyee Message会弹出test2的请求对话框

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

同意请求之后,在联系人列表就可以看到双方在线的情况以及对方的注册信息。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

下面测试2款异构的客户端之间的通信(Spark是Java客户端,Rooyee Message是用Delphi开发的客户端,但两者都是基于XMPP协议)。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

Spark客户端的消息。

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

Rooyee Message的消息框。

同时打开Openfire的后台,我们可以看到两者的的回话信息:

(转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

到现在服务器和客户端都已经准备测试通过了。

从中我们可以发觉XMPP协议的开放性。

四、Smack 和 ASmack

1. Smack API是一个完整的实现了XMPP协议的开源API库,支持文件、音频、视频等消息。可以使用该API库进行二次开发。

2. 由于Smack官方没有实现移动版本的API,但是第三方提供开源的基于Smack的Anadorid API:ASmack(Android
build environment and patches for
smack)。在Android上面可以利用该API可以进行基于XMPP协议的即时消息应用程序开发。