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


    主要包含4个章节:

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

    2. 搭建 Openfire 服务器

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

    4. Smack 和 ASmack

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

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

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

          OpenFire


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

          Spark


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

          Smack

         

    二、搭建Openfire服务器

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

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

          DNS2

         

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

          DNS3

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

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

          Openfire 下载

         

          下载完解压缩,我的目录是:D:TechnologyXMPPopenfire。

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

          db

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

          table

          这里截取了一部分表。

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

         

    2.3 开始安装openfire

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

          run

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

          step_1

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

          step_2_2

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

          step_3

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

          step_4

          选择SqlServer

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

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

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

          step_5

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

          step_6

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

          step_7

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

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

          step_11

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

          step_8

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

          step_9

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

          step_10

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

         step_13

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

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

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

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

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

          Spark

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

          SparkWeb

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

          rooyee

         

          开始进行测试:

          step_15

                step_17    

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

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

          step_18

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

          step_19

         

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

          step_20

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

          step_23

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

          step_25

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

          step_26

          Spark客户端的消息。

          step_27

          Rooyee Message的消息框。

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

          step_28

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

          从中我们可以发觉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协议的即时消息应用程序开发。

         

  • 相关阅读:
    浅谈欧拉定理的证明
    10-8 王小呆的校内互坑赛题解
    10-8 王小呆的校内互坑赛题面
    线段树 洛谷P3932 浮游大陆的68号岛
    BFS+最小生成树+倍增+LCA【bzoj】4242 水壶
    洛谷P1119 灾后重建
    border-radius:50%和100%的区别
    react-native Android release打包失败
    关于react理解的文章
    atom常用快捷键-mac亲测
  • 原文地址:https://www.cnblogs.com/sandea/p/3782085.html
Copyright © 2020-2023  润新知