XMPP协议即时通讯(Openfire服务器版)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XMPP协议即时通讯(Openfire服务器版)

一、什么是XMPP

XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的IM(IM:instant messaging,即时消息)协议之一。

XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML 环境中灵活的发展性。

XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。

服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ 等。

XMPP即时通信协议,采用C/S体系结构。基本的网络形式是客户端连接到服务器,然后由服务器去连接到另一个客户端进行两个客户端之间的通信。

而他们传输的是XML流。

XMPP工作原理说明: 所有从一个客户端到另一个客户端的消息和数据都要通过服务器。

1、客户端连接服务器

2、服务器利用本地目录系统的证书对其认证

3、客户端制定目标地址,让服务器告知目标状态

4、服务器查找,连接并进行相互认证

5、客户端间进行交互

二、搭建服务器(Openfire)

通过上述的了解,我们知道要想进行通信,我们必须要有一个服务器。服务器端采用Openfire作为服务器。

允许多个客户端同时登录并且并发的连接到一个服务器上。

服务器对每个客户端的连接进行认证,对认证通过的客户端创建会话,客户端与服务器端之间的通信就在该会话的上下文中进行。

首先安装Openfire

点击继续

点击安装

安装成功后再偏好设置中就会有Openfire的图标。点击Openfire的图标

如果第一次安装Openfire,会发现Openfire的状态是停止的。点击Start

Openfire,开启Openfire服务器

注:如果Openfire一直打不开,请参考:

/winer888/article/details/49886281

当Status成为Running。点击右边的Open Adimin Console。会进入Openfire 的配置界面

选择中文,下一步

服务器设置,如果是本机,域中填写127.0.0.1,其余的不用修改。下一步

选择标准数据库连接。下一步

这个地方需要我们链接一个数据库,在数据库驱动选项中选择MySQL。

点击Start All,然后当上面的MySQL Database、ProFTPD、Apache Web Server 都变为绿色的Running就说明这些服务都已经开启了

进入XAMPP界面。选择左边的PHPMyAdmin

新建一个数据库,并给数据库起一个名字

在前往文件夹中输入/usr/local

找到openfire文件夹,此时的Openfire文件夹是只读的。

右键显示简介,将共享和权限改成读与写

在openfire/resources/database/openfire_mysql.sql找到数据库格式文件。将这个文件复制到桌面

然后进入到XAMPP界面。导入数据库格式

然后我们继续配置Openfire,修改数据库URL和用户名密码。

数据库URL,将[host-name]换成127.0.0.1。[database-name]换成数据库的名字。用户名默认root,密码无,点击继续

特性设置选择初始设置,点击继续。

管理员账户,填写你的邮箱和密码(一定要记住哦)。点击继续,就配置好了Openfire服务器。

点击登录到管理控制台,输入用户名(admin)和密码。这样就进入了Openfire 的后台管理控制平台。

三、安装和使用Spark客户端

Spark是一个实时通讯客户端。我们可以通过Spark来进行即时通讯。

安装好Spark后,登录Spark

登录成功后,进入Openfire后台管理界面,刷新页面,admin会变为绿色的,即上线状态(灰色为未上线状态)

通过登录admin账号,也就可以说明,Openfire的服务器配置是成功的。

四、代码实现客户端

服务器用Openfire实现了,下面我们用代码创建即时通讯客户端

1、前期准备

新建一个工程,导入XMPP框架到工程,进入XMPP框架下XMPPConfig.h

文件中,将服务器IP地址,端口号、域名、resource做一下修改。

注意:由于我们的服务器是本地的,所以填写127.0.0.1,域名要和Openfire 填写域名一致。

然后导入一些框架

CoreData.framework、libxml2.tbd、libresolv.tbd、libidn.a

修改一下Header Search Path

添加一个PCH文件,命名为PrefixHeader.pch,修改一下路径

注意.pch在工程中的路径

然后在PCH文件中添加#import头文件

command+b一下,会有一个红色报错,点击红色报错,由于重名,所以进所以将SCNetworkReachabilityFlags改成SCNetworkReachabilityFlags1,command+b 后没有报错。

2、创建一个管理类,便于我们去将代码分类管理

创建一个XMPPManager单例类,继承于NSObject。这个类是这个工程中的核心功能代码。

首先要在XMPPManager中创建一个通信通道属性,即XMPPStream。这个实例是传输数据的,只有通信通道是连通的那么才可以进行数据的传输,XMPPStream也是XMPP的核心类。

在XMPPManager.m中的init方法中,进行初始化XMPPStream,并指定服务器IP、端口和设置代理

相关文档
最新文档