iOS基于XMPP实现即时通讯之一、环境的搭建

原创 2016年09月16日 19:57:17

移动端访问不佳,请访问我的个人博客

使用XMPP已经有一段时间了,但是一直都没深入研究过,只是使用SDK做一些简单的操作,看了许多大神的博客,自己总结一下,准备写一系列关于XMPP的使用博客,以便于自己更加深入学习~

IM协议及服务器选型

http://liudanking.me/arch/xmpp%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%89%E5%9E%8B/
协议选型:XMPP已经成为标准的IM协议。XMPP官网:http://XMPP.org/
服务器型:使用广泛的是ejabberd,jabberd 2.x, Openfire,Tigase。从编程语言角度来看主要是JAVA和Erlang。JAVA语言的优势是类库完备,容易招人。Erlang的优势是hot code swap,live console, 高并发。而且ejabberd是对XMPP协议支持最好、实现最为全面的server。因此企业在不考虑独立开发服务器的情况下,初期选型基本建议采用ejabberd。

本文我们主要实践iOS端流程,不考虑太多服务器实现,因为Openfire易安装,插件功能丰富,我们使用Openfire

MAC上搭建MySQL

因为服务器需要数据库支撑,所以我们在搭建Openfire前要先搭建数据库。

下载MySQL安装包

我们先去MySQL官网去下载MySQL的安装包,如下图所示:

这里写图片描述

这里写图片描述

安装MySQL

下载完后,开始安装MySQL如下图:

这里写图片描述

注意事项:因为安装完MySQL后它会自动给你生成一个密码,所以你要保存好这个密码,后面修改密码的时候会用到,如下图所示:

这里写图片描述

配置MySQL

启动MySQL

首先在设置里面找到MySQL的启动按钮,启动MySQL服务,如下图:

这里写图片描述

这里写图片描述

定义MySQL别名

然后需要将MySQL的指令重新定义一下,因为MySQL的指令集在/usr/local/mysql/bin/mysql路径下,需要执行一下命令行:

# 定义mysql别名
alias mysql=/usr/local/mysql/bin/mysql
# mysqladmin
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

修改MySQL账户密码

之前安装完成后系统给我们了一个默认的密码,因为那个密码很繁琐不容易记住,所以我们需要重新设置一个密码,我们先输入如下指令设置新密码,”newpassword”为你要设置的新密码:

mysqladmin -u root -p password "newpassword"
#然后 Enter password: 【输入原来的密码】

如下图所示表示密码修改成功:

这里写图片描述

完成后以后root账户需要密码就用你新设置的密码就行了~

连接数据库,创建Openfire数据库

# 连接数据库
mysql -u root -p
# 创建Openfire数据库
create database openfire;

完全卸载MySQL

在系统内存不够时有时候我们会需要删除掉MySQL,一下就是删除MySQL的方法:

Yosemite 系统开始,/etc/hostconfig 这个文件已经移除,所以 Yosemite 后的系统可以忽略下面的命令

sudo nano /etc/hostconfig

然后以下是终端执行代码:

sudo rm -rf /usr/local/mysql  
sudo rm -rf /usr/local/mysql*  
sudo rm -rf /Library/StartupItems/MySQLCOM  
sudo rm -rf /Library/PreferencePanes/My*  
sudo nano /etc/hostconfig     (复制前面部分回车,然后删掉这一行: MYSQLCOM=-YES-,control+O回车保存,control+X退出编辑界面)  
sudo rm -rf ~/Library/PreferencePanes/My*  
sudo rm -rf /Library/Receipts/mysql*  
sudo rm -rf /Library/Receipts/MySQL*  
sudo rm -rf /var/db/receipts/com.mysql.*  

MAC上搭建Openfire

下载并安装openfire

openfire官网上去下载相应的包:

这里写图片描述

双击进行傻瓜式的安装就好了,安装完毕后会在系统偏好设置里面找到openfire的启动器

点击Openfire会进入启动页面

点击Open Admin Console进入浏览器设置页面,语言选择简体中文

接着设置服务器的名字

链接数据库

注意里面的用户名和密码是你数据库的用户名和密码,用户名一般是root,密码是你之前重新设置的密码~~~

然后一直继续就OK了,最后需要我们登录到openfire

密码就是之前设置的密码

openfire启动失败解决办法

当你发现你的电脑上的openfire无论你是重新安装还是重启都无法启动的情况下你可以按照我下面写的那些终端指令来启动你的openfire不用再去重新做你的系统了.

一般你发现你的openfire打开出现这样的窗口后你就可以想到你的openfire出问题了,极个别的时候你可以通过重新安装来解决.

如果大家的问题重新安装后没有解决那就试下我下面的方法.

先打开自己电脑上的终端然后输入以下指令:

// 获取权限
sudo chmod -R 777 /usr/local/openfire/bin
cd /usr/local/openfire/bin
export JAVA_HOME=`/usr/libexec/java_home` # 记住这里不是单引号而是英文下数字1左边的按键.
echo $JAVA_HOME
# 终端上打印的内容 /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
cd /usr/local/openfire/bin
./openfire.sh
# 终端上打印的内容
# Openfire 4.0.3 [Sep 16, 2016 4:19:21 PM]
# Admin console listening at http://wangchongleidemacbook-air.local:9090

一般你输入完成这些指令后你再打开你的openfire就会发现这样的情况.

安装openfire后admin无法登录管理控制平台

解决方案如下:

  • 使用Mysql查看工具进入数据库,进入表“ofuser”,将该表清空,然后执行SQL 语句
INSERT INTO ofUser (username, plainPassword, name, email, creationDate, modificationDate) VALUES ('admin', 'admin', 'Administrator', 'admin@example.com', '0', '0');
  • 关闭openfire服务,就是从其控制台stop然后再start,再用用户名:admin,密码:admin登录即可.

彻底删除openfire服务器的

首先,确保你已经关掉了openfire
打开终端 (在应用程序–>实用工具–>)
输入以下命令

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

第一条会让你输入管理员密码,尽管你输入的时候,终端不会显示,不必担心,正确输入后按回车,它就执行了。
三条命令以后,openfire就彻底消失了.但是需要重启一下系统偏设置。

总结

配置过程还是比较繁琐的,一共需要好几个步骤,需要装的有MySQLJAVA环境openfire,里面有一步没做好都没法使用,自己完整配置下来也花了很长时间,大家如果有什么问题可以留言问我,谢谢大家的阅读~~

参考文档:

http://www.cnblogs.com/xiaodao/archive/2013/04/04/2999426.html

http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html

http://www.jianshu.com/p/5d88fe201c71

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS开发之使用XMPPFramework实现即时通信(二)

上篇的博客iOS开发之使用XMPPFramework实现即时通信(一)只是本篇的引子,本篇博客就给之前的微信加上即时通讯的功能,主要是对XMPPFramework的使用。本篇博客中用到了Spark做测...
  • DJH996064549
  • DJH996064549
  • 2016年05月18日 10:48
  • 6074

iOS三方库:xmpp中是如何跟服务器进行联系的?

xmpp中是如何跟服务器进行联系的? 第一步:通过各种模块从服务器获取数据。比如电子名片模块,头像模块,花名册模块,消息模块等。 第二步:修改的数据需要同步到服务器,自己定义的方法,当点击保存按钮时就...
  • gongwutianya
  • gongwutianya
  • 2016年05月07日 09:16
  • 718

iOS开发之使用XMPPFramework实现即时通信(一)

关于XMPP的理论介绍在本篇博客中就不做赘述了,如何在我们之前的微信中加入XMPP协议来实现通信呢?下面将会介绍一下XMPP的基本的知识,让我们的微信可以实现互联通信。要做的准备工作是要有服务器支持X...
  • DJH996064549
  • DJH996064549
  • 2016年05月18日 10:47
  • 1131

iOS即时通信之XMPP框架的使用及原理简介

XMPP框架的使用及原理
  • u011146511
  • u011146511
  • 2016年04月28日 22:18
  • 878

iOS xmpp即时通讯

  • 2016年03月12日 17:28
  • 4.55MB
  • 下载

XMPP协议实现即时通讯底层书写 (二)-- IOS XMPPFramework Demo+分析

我希望,This is a new day!  在看代码之前,我觉得你还是应该先整理一下心情,来听我说几句: 首先,我希望你是在早上边看这篇blog,然后一边开始动手操作,如果你只是看blog而不去自...
  • a21064346
  • a21064346
  • 2014年11月20日 00:30
  • 4185

基于XMPP的IOS实现单聊,群聊功能(一)

这篇文章包括接下来的几篇文章主要是来介绍下用XMPP协议实现IOS中类似QQ微信那样的单聊,群聊功能。事先说明下,如果想要完全实现像QQ群那样的功能,服务器必须要升级。为什么这么说呢?因为xmpp是一...
  • bawangjian123
  • bawangjian123
  • 2015年03月18日 14:55
  • 1260

xmpp iOS集成xmppframework

地址 https://github.com/robbiehanson/XMPPFramework    下载。 框架有一些依赖项。你不需要分别添加。他们都在添加XMPPFramework时,就都...
  • qq_29943281
  • qq_29943281
  • 2016年01月27日 10:59
  • 1092

iOS开发之使用XMPPFramework实现即时通信(二)

上篇的博客iOS开发之使用XMPPFramework实现即时通信(一)只是本篇的引子,本篇博客就给之前的微信加上即时通讯的功能,主要是对XMPPFramework的使用。本篇博客中用到了Spark做测...
  • DJH996064549
  • DJH996064549
  • 2016年05月18日 10:48
  • 6074
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS基于XMPP实现即时通讯之一、环境的搭建
举报原因:
原因补充:

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