zoukankan      html  css  js  c++  java
  • (转)基于即时通信和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协议的即时消息应用程序开发。

         

  • 相关阅读:
    hihoCoder #1176 : 欧拉路·一 (简单)
    228 Summary Ranges 汇总区间
    227 Basic Calculator II 基本计算器II
    226 Invert Binary Tree 翻转二叉树
    225 Implement Stack using Queues 队列实现栈
    224 Basic Calculator 基本计算器
    223 Rectangle Area 矩形面积
    222 Count Complete Tree Nodes 完全二叉树的节点个数
    221 Maximal Square 最大正方形
    220 Contains Duplicate III 存在重复 III
  • 原文地址:https://www.cnblogs.com/sandea/p/3782085.html
Copyright © 2011-2022 走看看