iOS_32_XMPP环境搭建

•XMPP:The Extensible  Messaging and Presence Protocol(可扩展通讯和表示协议)
•XMPP可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输
XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议
•XMPP是基于XML的协议,用于即时消息(IM instant message)以及在线现场探测
促进服务器之间的准即时操作。






•即时通讯技术(IM)支持用户在线实时交谈。

•IM系统最大的区别在于各自通讯协议的实现
所以即时通讯技术的核心在于它的传输协议

协议用来说明信息在网络上如何传输,
目前已经出现过的IM协议包括:
IETF的对话初始协议(SIP)和即时通讯对话初始协议和表示扩展协议(SIMPLE)、
应用交换协议(APEX)、
显示和即时通讯协议(PRIM)
基于XML且开放的可扩展通讯和表示协议(XMPP
XMPP又常称为 Jabber协议


•XMPP是基于XML的协议。

•XMPP前身是Jabber1998年)
是一个开源组织定义的网络即时通信协议
XMPP是一个分散型通信网络,任何XMPP用户都可以向其他任何XMPP用户传递消息。
多个XMPP服务器也可通过一个专门的“服务器-服务器”协议相互通信,


XMPP是一种基于XML的协议是可扩展的
可以通过发送扩展的信息来处理用户的需求,
以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。
而且,XMPP包含了针对服务器端的软件协议
使之能与另一个进行通话,
这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。
•XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的

•XMPP的扩展协议Jingle使得其支持语音和视频
•XMPP的官方文档时RFC 3920




•XMPP是一个典型的C/S架构,
大多数情况下,当两个客户端进行通讯时,
他们的消息都是通过服务器传递的。
采用这种架构,主要是为了简化客户端,
将大多数工作放在服务器端进行

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

服务同时承担了客户端信息记录,
连接管理和信息的路由功能

网关承担着与异构即时通信系统的互联互通,
异构系统可以包括SMS(短信),MSN,ICQ等

•基本的网络形式是单客户端通过TCP/IP连接到单服务器
然后在此连接之上传输XML


通讯步骤:
1.节点连接到服务器
2.服务器利用本地目录系统中的证书对其认证
3.节点指定另一个目标节点地址,让服务器告知其状态
4.服务器查找、连接并进行相互认证
5.节点之间进行交互



•XMPP应用传输的是与即时通讯相关的指令

•XMPP的协议形式变成了XML格式的纯文本

•XMPP的核心部分就是一个在网络上分片段发送XML的流协议
这个流协议是XMPP的即时通讯指令的传递基础
也是一个非常重要的可以被进一步利用的网络基础协议
XMPPTCP传的是XML
•缺点:数据量大,没有二进制传输
•XMPP是一种类似于HTTP协议的一种数据传输协议,
其过程就如同“解包装--〉包装”的过程。
只需要理解其接收的类型及返回的类型,
便可以很好的利用XMPP来进行数据通讯

•XMPP官方网站——xmpp.org


每个XMPP客户端用户必须拥有一个全局惟一标识
标识符称为JabberID或JID。
鉴于协议的分布式特征,JID应包含联系用户所需的所有信
JID的结构类似于电子邮件地址
客户端和服务器节点,被统称为XMPP实体,都拥有JID。
例如:beyondLtd公司的员工nana可能拥有JID形式如下:nana@beyond.com,
其中beyond.com是 beyondLtd公司的XMPP服务器的地址,
nana是用户名

•框架地址:http://xmpp.org/xmpp-software/libraries/

•https://github.com/robbiehanson/XMPPFramework



•可用服务器地址:xmpp.org/xmpp-software/servers/
NamePlatform(s)LicenseDetailsLatest Release
Apache VysperWindows / LinuxApache License Version 2.0mina.apache.org2011-02-23
CitadelLinuxGPL3citadel.org2013-08-14
CommuniGate ProLinux / Mac OS X / WindowsCommercialcommunigate.com2013-09-10
Coversant SoapBox ServerWindowsCommercialcoversant.comunknown
djabberdLinuxGPL3danga.com2011-06-13
ejabberdLinux / Mac OS X / Solaris / WindowsGPL2process-one.net2013-06-28
IceWarpLinux / WindowsCommercialicewarp.com2012-12-11
iChat ServerMac OS XCommercialapple.com2012-07-25
in.jabberdLinuxGPL2inetdxtra.sourceforge.net2013-05-16
Isode M-LinkLinux / Solaris / WindowsCommercialisode.com2013-06-24
jabberd 1.xLinuxGPL2jabberd.org2012-06-28
jabberd 2.xLinux / Solaris / WindowsGPL2jabberd2.org2012-08-26
Jabber XCPLinux / Solaris / WindowsCommercialcisco.com2008-10-31
Jerry MessengerLinux / WindowsCommercialj-livesupport.comunknown
KwickserverWindowsGPLkwickserver.info2010-10-15
Metronome IMLinux / Mac OS XISC/MITlightwitch.org/metronome2013-10-02
MongooseIMLinux / Mac OS XGPL2erlang-solutions.com2013-05-23
OpenfireLinux / Mac OS X / Solaris / WindowsApacheigniterealtime.org2013-05-28
Oracle Communications Instant Messaging ServerLinux / Solaris / WindowsCommercialoracle.com2013-05-07
Prosody IMLinux / Mac OS X / WindowsMIT/X11prosody.im2013-09-10
psycedLinux / Mac OS X / WindowsGPL2psyced.org2011-11-22
Siemens OpenScapeLinuxCommercialsiemens-enterprise.com2011-12-15
TigaseLinux / Solaris / Mac OS X / WindowsAGPLtigase.org2013-04-24
VinesLinux / Mac OS XMITgetvines.com2013-06-22
WokkelLinux / Solaris / Mac OS XMITwokkel.ik.nu2013-01-12





Openfire简介
–采用Java开发,
开源的实时协作(RTC)服务器,
基于XMPP(Jabber)协议
–可以轻易的构建高效率的即时通信服务器
–安装和使用简单,并利用Web进行管理
单台服务器可支持上万并发用户





下载完成后,如图

一、下载完成后,打开安装包,双击Pkg文件,开始安装

•下载并安装:http://www.igniterealtime.org/projects/openfire/index.jsp

•安装位置: / usr /local/ openfire /

安装位置该文件夹的用户访问权限  需要手动修改

•数据库脚本保存在 / usr /local/ openfire /resources/ database文件夹下






安装成功


目录禁止访问,需要手动添加当前用户帐号




二、解决办法:进入/usr/local文件夹,修改openfire目录权限 (右键,显示简介)





添加当前帐号用户,并为其赋予读写权限


修改为读写权限 ,并再次上锁


此时,可以访问openfire文件夹了




三、安装完成后,打开系统偏好


如果终始无法开启open fire,说明其依赖的JDK环境没有安装








四、若想成功启动Openfire,还需要安装JDK环境(200M左右)
JDK7下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
JDK8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

查看机器上是否安装了JDK,bash终端中输入:         java -version  回车
查看机器上的版本:ls -la /System/Library/Frameworks/JavaVM.framework/Versions/
JDK的安装目录为:/Library/Java/JavaVirtualMachines,里面有所有安装的JDK



查看系统是32还是64位的方法:
打开终端,在应用程序的工具下,输入代码:
ioreg -l -p IODeviceTree | grep "firmware-abi" | sed -e 's/[^0-9A-Z]//g'    
回车  EFI64或者EFI32代表你的机器支持64或者32位的



判断系统里是否已经安装 gcc编译器的方法是:
打开一个终端,输入命令 g++
没有则输出command not found
若安装了则输出 not input files 


Mac版本 Eclipse下载(仅标记非必需
http://dl.google.com/android/studio/install/0.8.0/android-studio-bundle-135.1245622-mac.dmg











下载完毕,开始安装JDK8











安装好JDK之后,就可正常打开openfire了






五、点击上图的【open admin console】,正式开始配置openfire服务器

1.设置语言,选中文,端口默认【9090】



2.主机设置

设置主机的访问ip地址

域名:主机名.local    比如:beyonddemacbook-pro.local

如果觉得自己的主机名不好听,可以在【系统偏好设置--->【共享   中设置






注意:域不能是机器名,否则会如下错误:

HTTP ERROR: 500 INTERNAL_SERVER_ERROR

本地的域,要设置为127.0.0.1

3.数据库设置

设置外部数据库(推荐,比如:MySQL),选择标准数据库连接,需提前安装,请参照上一篇


4.设置数据库连接 【前提是在数据库中新建好一个库】

•create  database   openfire;
#修改数据库字符集
•alert  database openfire  default character set = utf8;
#切换数据库
•use openfire
#执行数据库脚本创建数据表
source /usr/local/openfire/resources/database/openfire_mysql.sql


进入openfire安装目录  /usr/local/openfire/resources/database/ 【如果提示没有权限,被拒绝,参照上面的做法】


再次进入mysql,

•使用openfire database
执行:source /usr/local/openfire/resources/database/openfire_mysql.sql





至此,前面数据库就配置好,可以继续配置openfire了




继续配置openfire


附其他库的URL固定写法及端口号





(1)数据库驱动选择:MySQL,前提是已安装MySQL(具体的安装方法可以参考上一篇:mac上安装MySQL

(2)JDBC驱动,默认不变

com.mysql.jdbc.Driver

(3)数据库URL:

形式如下:

jdbc:mysql://你的主机名:端口号/数据库名称

这里设置为

jdbc:mysql://localhost:3306/openfire
jdbc:mysql://localhost:3306/openfire?rewriteBatchedStatements=true

其中主机名[host-name]改为localhost

其中数据库名称[database-name]改为openfire (自己在mysql手动建立的库)

解决数据库字符编码问题,可以在后面加

?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

最终的url形式是

jdbc:mysql://localhost:3306/openfire?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

注意:前提是已存在一个名为openfire的数据库,否则会报如下错误,连接配置不成功

The Openfire database schema does not appear to be installed. Follow the installation guide to fix this error. 



前期的MySQL数据库准备工作如下:

<1>设置/usr/local/openfire文件夹的访问权限为可读写

方法1:在finder中前往文件夹/usr/local/,右键openfire文件夹,显示简介

点击如图右下角中的锁图标解锁,并设置权限为:可以读写

方法2:打开终端,输入如下命令

sudo chmod 777 /usr/local/openfire

其中777表示授权可读写权限,000表示无访问权限,(具体的含义可以参考上一篇:mac的终端命令

<2>在终端中,登陆MySQL

mysql -u root -p

然后输入数据库的root密码

<3>创建数据库openfire

create database openfire;
use openfire;
 
  
alertdatabase openfire default character set = utf8;

<4>导入openfire资源文件夹 resources/database下的数据表

use openfire;
source /usr/local/openfire/resources/database/openfire_mysql.sql

 在终端出现一排导入过程


 <5>刷新权限

flush privileges;

<6>退出MySQL

exit

(4)用户名和密码

这里的用户名密码,是访问MySQL数据库时使用的帐号:root,和安装MySQL设置的root密码



5.继续设置openfire的特性

如果不打算使用LDAP,则保持默认设置


 6.设置openfire服务器管理员的帐号和密码

管理员:admin@beyond.com

密码:123456

123456


可以随便填写一个管理员邮箱,输入要设置的密码

完成注册


 



7.登陆管理控制台 admin 123456

 

默认的管理员帐号是“admin”,默认管理员密码“admin”,如果上面最后一步设置了新密码,则管理员密码是新密码123456

 


 





如果想去掉默认的admin帐号,并自定义,需要如下操作

 

(1)在终端中,登陆具体的数据库(openfire)

 

mysql -u root -p openfire

 

然后输入数据库的root密码

 

(2)删除表“ofUser”中的admin帐户

 

delete from ofUser where username='admin';

 

(3)创建自定义管理员(用户名:admin,密码:123456)

 

INSERT INTO ofUser (username, plainPassword, encryptedPassword, name, email, creationDate, modificationDate) VALUES ('admin','123456','e10adc3949ba59abbe56e057f20f883e','Administrator','admin@beyond.com','001410251606152','0');

  注意:如果重设了用户名,必须重启openfire服务器 





六、卸载openfire

1.停止服务

在系统偏好设置的其他里,打开openfire偏好设置

点击Stop Openfire按钮,停止服务

2.删除文件

打开终端,输入以下命令

sudo rm -rf /Library/PreferencePanes/Openfire.prefPane
sudo rm -rf /usr/local/openfire
sudo rm -rf /Library/LaunchDaemons/org.jivesoftware.openfire.plist

其中第一条命令之后,需要输入本机管理员密码

3.如果想要重新安装openfire

打开终端,输入以下命令,打开openfire.xml,找到setup节点后 将值改为false,并drop掉openfire database










七、为openfire新建多个用户,供不同客户端软件之间测试
密码都是123456









八、配置一下客户端 (iMessage)
信息---->偏好设置




左下角的添加---->其他邮件帐户---->继续

帐户类型---->用户名@域名   如:admin@beyonddemacbook-pro.local---->创建
密码123456 (在Openfire中创建帐户时填写的密码)

弹出这个---->点击继续

成功上线---->jabber (意思是:通过客户端,通过用户名+密码+服务器域名  从而连接上了Openfire,)







九、配置一下客户端 (Adium 23M左右)

Adium是一款Mac上开源免费的多协议聊天客户端,
Adium支持...... 等10多种知名的在线即时聊天协议,
这样,你可以使用Adium一款软件来代替其他多个聊天工具的客户端,
统一管理和统一聊天,支持中文,非常不错!

支持的服务列表如下---->

Jabber ID---->用户名@域名   如:nana@beyonddemacbook-pro.local---->创建
密码123456 (在Openfire中创建帐户时填写的密码)





通过iMessage的admin@beyonddemacbook-pro.local帐户
nana@beyonddemacbook-pro.local发出申请好友请求---->


Adium上的帐户(nana)收到了好友申请



选择验证并添加



iMessage(admin)上面已经有了nana这个好友了



聊天界面如下

同理,通过Adium添加联系人也是一样的---->
通过的Adium的nana@beyonddemacbook-pro.local帐户
iMessage的admin@beyonddemacbook-pro.local发出申请好友请求







十、配置一下客户端 (Spark 26M左右,依赖JRE6)










































  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值