陈斌彬的技术博客

Stay foolish,stay hungry

基于 XMPP 的 iOS 聊天客户端(XMPP服务器架构)(原创)

img

ejabberd 简介

ejabberd 是基于 Jabber/XMPP 协议的即时通讯服务器,由 GPLv2 授权(免费和开放源码),采用 Erlang/OTP 开发。它的特点是,跨平台,容错,集群和模块化。

Ejabberd 目前是可扩展性最好的一种 Jabber/XMPP 服务器,支持分布多个服务器,并且具有容错处理,单台服务器失效不影响整个 cluster 运作。

关于 XMPP 的框架,以文本聊天为例,需要发送的消息为:

<message type="chat" from="kang@server.com" to="test@server.com">  
    <body>helloWord</body>  
</message> 

基中 from 是从哪个用户发送的消息,to 是发给谁的消息,XMPP 的用户都是以邮箱形式。body 就是我们发送的消息文本。

好了,说到这里,我们就来开发一个基于 XMPP 的 IOS 聊天客户端程序,首先我们需要 XMPP 服务器,这里,我就拿本机做服务器,首先从xmpp Server下载ejabberd 这个服务器,ejabberd 支持 Linux / Mac OS X / Solaris / Windows,所以任何操作系统都可以做我们的聊天服务器。好了,下载完后,一步一步安装就可以了,这里我们要注意一下。

img

img

img

打开安装包,进行安装

img

img

img

img

img

这里我们的服务器就是 appledeimac.local(一般就是机器名,默认就可以了,不需要改),每台机器的用户名都不一样,这里的服务器域名就是机器名,这个我们需要记住哦

接着一步一步,还要设置管理员密码,密码当然也需要记住了,不然我们没办法登录管理员页面去。

好了,安装完后启动,如图所示:

方法一:终端输入

img

方法二:直接点击 start

img

img

我们点击 admin interface,会要求我们输入用户名和密码:

img

这里用户名是前面我们安装的时候有一个管理员名,将管理员名跟我们的服务器组合就可以了,我这里是 admin@appledeimac.local,每一台机器都不一样,不要照抄哦,这样你是登录不了的,密码就是安装的时候设置的密码,我的是 12345,如果一直进入不了,就关闭网页,输入网址:http://localhost:5280/admin

Configuring Jabber Users

At the moment our service has just administrators. We need to populate it with at least one user. The previous web page contains a link to the admin interface, which is available at http://localhost:5280/admin/. Once you have logged in as the admin you should see a console like the following.

登录成功后就会显示如下页面

img

这里我们需要解释的就是"访问控制列表",这里是设置管理员的,我们可以在这里创建其他管理员,这个不是我们的重点,我们的重点是"虚拟主机"

点开->虚拟主机,下面有一个 appledeimac.local,也点开

img

img

这里有一个 用户,我们需要创建几个用户来进行数据交互。

我创建了 kang@appledeimac.localtest@appledeimac.localabc@appledeimac.local 这几个用户,过一会我们就用这几个用户进行聊天

img img

好了,服务器装好了以后,我们就需要下载个客户端来进行聊天,这里有一些客户端工具

http://xmpp.org/xmpp-software/clients/,这里我们主要推荐 MAC 用 Adium,Windows 用 Citron。

安装 Adium

img

img

成功登陆后,显示可以聊天状态

img

在 ejabberd 里面可以看到 admin@appledeimac 用户在线

img

img

添加好友

选择联系人

img

img

img

双击联系人,发送一条信息

img

在 ejabberd 中就可以看得一条离线信息

img

可以看到 body 里面就是发送的内容

img

Resource Reference