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

转载 2012年03月30日 09:26:41

主要包含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:\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

      DNS2

     

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

      DNS3

 

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

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

      Openfire 下载

     

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

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

      db

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

      table

      这里截取了一部分表。

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

     

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协议的即时消息应用程序开发。

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

主要包含4个章节: 1. Java 领域的即时通信的解决方案 2. 搭建 Openfire 服务器 3. 使用客户端测试我们搭建的 Openfire 服务器 4. Smack ...
  • liuhu767
  • liuhu767
  • 2015年06月24日 14:08
  • 395

Android IM之基于Openfire+Smack的聊天服务器的搭建与测试

XMPP协议(Extensible Messaging and PresenceProtocol,可扩展消息处理现场协议)是一种基于XML的协议,目的是为了解决及时通信标准而提出来的,最早是在Jabb...
  • sbsujjbcy
  • sbsujjbcy
  • 2015年09月26日 09:50
  • 9456

搭建IM服务 so easy

目前国内有很多成熟稳定的即时通讯服务厂家,使用这些专业的服务可以提高开发效率而且服务稳定有保障。如果自己DIY或者需要在封闭的局域网内使用IM服务,该怎么办呢?...
  • zzhdi
  • zzhdi
  • 2016年03月21日 14:10
  • 1694

IOS即时通讯 - mac搭建Openfire服务器

XMPP协议是国际网络即时通讯的标准协议(哪怕在国内几乎没有人使用这个协议),它定义IM通讯的标准如果要实现即时聊天不光需要客户端,还需要服务器,可是对于我们移动端的开发程序员来说要我们自己去搭建一个...
  • u011068996
  • u011068996
  • 2015年06月20日 12:26
  • 1694

windows 7 搭建openfire 服务器 图解

1、下载OpenFire最新版 http://www.igniterealtime.org/downloads/index.jsp OpenFire有两种形式的下载,一个是EXE(包含JRE),一个是...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2015年10月20日 23:54
  • 1651

基于Openfire Smack开发即时通讯应用、搭建Openfire服务器(一)

一:Openfire是什么? Openfire 是基于XMPP 协议的IM 的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信...
  • a_zhon
  • a_zhon
  • 2017年03月08日 15:46
  • 4347

xmpp开发IM即时通讯系列(二)--即时通讯服务器搭建(2)openfire服务器搭建

数据库服务器建好了,接下来就要搭建应用服务器了,openfire是一款非常优秀的开源即时通讯服务器,大家耳熟能详,我就不多介绍了,开始讲怎样部署服务器,由于以后要对其插件开发,这次我是下载openfi...
  • tang86100
  • tang86100
  • 2016年04月17日 18:37
  • 1752

基于即时通信和LBS技术的位置感知服务(一)

一、前言、提出问题        公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不...
  • w7822055
  • w7822055
  • 2013年01月23日 08:43
  • 2135

基于openfire与Spark,Qt环境下开发IM

挑战一下,开发一个IM,唯一的限制就是必须用qt来开发(我真是醉了)。。。于是乎,just 干...
  • lonsegdi
  • lonsegdi
  • 2015年06月02日 18:19
  • 1168

从零开始搭建高可用IM系统

此文根据【QCON高可用架构群】分享内容,由群内【编辑组】志愿整理,转发请注明出处。 沈剑,目前任58同城技术委员会主席,高级架构师,优秀讲师。负责过百度hi,58帮帮等im系统...
  • langwang2
  • langwang2
  • 2015年09月24日 18:56
  • 1456
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端
举报原因:
原因补充:

(最多只允许输入30个字)