主要包含4个章节:

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

2. 搭建 Openfire 服务器

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

4. Smack 和 ASmack

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

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

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

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

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

二、搭建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

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

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

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

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

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

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

这里截取了一部分表。

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

2.3 开始安装openfire

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

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

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

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

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

选择SqlServer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

开始进行测试:

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

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

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

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

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

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

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

Spark客户端的消息。

Rooyee Message的消息框。

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

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

从中我们可以发觉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客户端的更多相关文章

  1. (转)基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案

    在<基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案>一文中,提到尝试使用XMPP协议来实现即时通信.本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不 ...

  2. (转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案

    一.前言.提出问题 公司最近举行2011年度创新设计大赛,快年底了正打算写写2010年以来Android开发的心得与经验,正好同事出了个点子:假如A和B两个人分别在不同的地点,能不能实现这样的功能,让 ...

  3. 搭建Minisipserve服务器实现局域网内IOS客户端idoubs的通信

    idoubs是IOS设备开发的第一款全功能并开放源码的3GPP IMS客户端,它同时专为IOS平台开发设计的voIP测试版客户端,以doubango为框架,能实现当前最先进的多媒体功能,主要功能有:语 ...

  4. IOS即时通讯XMPP搭建openfire服务器 分类: ios技术 2015-03-07 11:30 53人阅读 评论(0) 收藏

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  5. ios即时通讯客户端开发之-mac上搭建openfire服务器

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  6. IOS即时通讯XMPP搭建openfire服务器

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  7. XMPP之ios即时通讯客户端开发-mac上搭建openfire服务器(二)

    come from:http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html 一.下载并安装openfire 1.到http://w ...

  8. Java进阶:基于TCP通信的网络实时聊天室

    目录 开门见山 一.数据结构Map 二.保证线程安全 三.群聊核心方法 四.聊天室具体设计 0.用户登录服务器 1.查看当前上线用户 2.群聊 3.私信 4.退出当前聊天状态 5.离线 6.查看帮助 ...

  9. comet基于HTTP长连接技术(java即时通信,推送技术详解)

    服务器推送技术的基础思想是将浏览器主动查询信息改为服务器主动发送信息,服务器发送一批数据,浏览器显示消息,同时保证与服务器的连接,当服务器需要再一次的发送数据,浏览器显示数据并保持连接. comet基 ...

随机推荐

  1. sql常识-LEFT JOIN

    SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行. LEFT JOIN 关键 ...

  2. ASP.NET中页面加载时文本框(texbox控件)内有文字获得焦点时文字消失

    代码如下: <asp:TextBox ID="TextBox1" runat="server" Height="26px" MaxLe ...

  3. des算法的C#实现

    DES是Data Encryption Standard(数据加密标准)的缩写.它是一种通过56位密钥来加密64位数据的方法. public class EncryptUtility{    #reg ...

  4. echarts标准饼图(二)——标题(title)配置

    标题(title)配置 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  5. maven安装配置(myeclipse)(一)

    欢迎转载:http://www.cnblogs.com/shizhongtao/p/3374130.html 对于我来说,maven主要用于jar包的管理,避免项目中频繁更换jar的版本,以及网上搜索 ...

  6. jQuery动态添加元素并绑定事件

    写网页的时候常常需要根据实际情况添加新的元素,然后这些新元素还需要绑定已有的事件,如:有一ul,点击其中某 li,根据其 id 或 value 等获取新的数据列表,并新建 ul 显示,新 ul 中的 ...

  7. NOIP2011(提高组)DAY2---观光公交(vijosP1741)

    描述 风景迷人的小城Y市,拥有n个美丽的景点.由于慕名而来的游客越来越多,Y市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第0分钟出现在1号景点,随后依次前往2.3.4……n号景 ...

  8. ssh 私匙登录, 文件rswrst权限

    skill -KILL -u user1  //注销用户 ssh 免密码登录 http://flysnowxf.iteye.com/blog/1567570 (说是防火墙的问题) http://fly ...

  9. java应用uploadify 3.2丢失session

    java应用uploadify 3.2丢失session http://c-bai.iteye.com/blog/1829269 uploadify上传用的是一个flash插件. flash中有个bu ...

  10. Using jQuery to add a dynamic “Back To Top” floating button with smooth scroll

    Ever read a really long blog post or article and then had to scroll all the way up to the top of the ...