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

使用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路径下,需要执行一下命令行:

  1. # 定义mysql别名
  2. alias mysql=/usr/local/mysql/bin/mysql
  3. # mysqladmin
  4. alias mysqladmin=/usr/local/mysql/bin/mysqladmin

修改MySQL账户密码

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

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

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

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

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

  1. # 连接数据库
  2. mysql -u root -p
  3. # 创建Openfire数据库
  4. create database openfire;

完全卸载MySQL

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

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

sudo nano /etc/hostconfig

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

  1. sudo rm -rf /usr/local/mysql
  2. sudo rm -rf /usr/local/mysql*
  3. sudo rm -rf /Library/StartupItems/MySQLCOM
  4. sudo rm -rf /Library/PreferencePanes/My*
  5. sudo nano /etc/hostconfig (复制前面部分回车,然后删掉这一行: MYSQLCOM=-YES-,control+O回车保存,control+X退出编辑界面)
  6. sudo rm -rf ~/Library/PreferencePanes/My*
  7. sudo rm -rf /Library/Receipts/mysql*
  8. sudo rm -rf /Library/Receipts/MySQL*
  9. 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出问题了,极个别的时候你可以通过重新安装来解决.

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

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

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

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

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

解决方案如下:

  • 使用Mysql查看工具进入数据库,进入表“ofuser”,将该表清空,然后执行SQL 语句
  1. 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

打开终端 (在应用程序–>实用工具–>)

输入以下命令

  1. sudo rm -rf /Library/PreferencePanes/Openfire.prefPane
  2. sudo rm -rf /usr/local/openfire
  3. 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基于XMPP实现即时通讯之一、环境的搭建的更多相关文章

  1. Android基于XMPP的即时通讯3-表情发送

    这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs ...

  2. Android基于XMPP的即时通讯2-文件传输

    本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager get ...

  3. Android基于xmpp的即时通讯应用

    xmpp是一个通信协议.因为这是个开放的协议,为了节俭开发成本,很多即时应用都采用了这个协议.Android上最常用的组合asmack +openfire.Asmack是smack的android版, ...

  4. 【XMPP】基于XMPP的即时通讯解决方案

    什么是XMPP 介绍XMPP之前,先来看看GTalk. GTalk是Google推出的IM(Instant Messaging,即时通讯)软件,类似于QQ和MSN. 从技术角度来说,GTalk与QQ和 ...

  5. Android基于XMPP的即时通讯1-基本对话

    闲暇之余,自己写了个简单的即时通讯,基于OpenFire服务器平台. 整个项目包括两个部分,一个是服务器端,一个是android手机端: 一.关于服务器端没什么好说的,下载安装配置即可 推荐下载带ja ...

  6. IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识

    最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...

  7. 基于XMPP的即时通信系统的建立(一)— XMPP基础概念

    相关背景 IM(Instant Messaging)正在被广泛使用,特别是公司与它们的客户互动连接方案以及互联网与Web2.0相关的应用.为了解决即时通信的标准问题,IETF(互联网工程任务组 The ...

  8. [iOS]从零开始开发一个即时通讯APP

    前言 这是我的毕业设计.刚开始确定这个课题的时候是因为以前有稍微研究过一些XMPP协议,在这个基础上做起来应该不难.然后开始选技术的时候还有半年,我想为什么不从更底层做起呢!那就不用XMPP,当时接触 ...

  9. 基于openfire+smack即时通讯instant message开发

    前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也有其他的选择. Openfire 是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使 ...

随机推荐

  1. iOS App 审核被拒的原因搜罗

    本文转载至 http://ju.outofmemory.cn/entry/108500   iOS app 审核 1.程序有重大bug,程序不能启动,或者中途退出. 2.绕过苹果的付费渠道,我们之前游 ...

  2. nodepad++ 快捷键加常用操作

    常用快捷键 新建文件 Ctrl+N 打开文件 Ctrl+O 保存文件 Ctrl+S 另存为 Ctrl+Alt+S 全部保存 Ctrl+Shift+S 关闭当前文件 Ctrl+W 打印文件 Ctrl+P ...

  3. AtomicInteger保证线程安全的全局变量

    现有业务场景需要做一个线程间的全局变量,并且实现自增效果. 初始使用了volatile 来保证count的安全性,如下: import java.util.concurrent.ExecutorSer ...

  4. [多媒体] m3u8简介

    m3u8简介 简介:https://www.jianshu.com/p/426425cad08a RFC:https://tools.ietf.org/html/rfc8216 原理:将视频或音频流分 ...

  5. sql优化(2)

    转自:https://www.cnblogs.com/Jacck/p/8030455.html 看到一篇非常全面的SQL优化文章,在开发的工作中往往不考虑性能上的缺失(在一开始的时候数据量不大也看不出 ...

  6. angularJS中的ng-show、ng-if指令

    angularJS中的ng-show.ng-hide.ng-if指令都可以用来控制dom元素的显示或隐藏. 1. ng-show和ng-hide 根据所给表达式的值来显示或隐藏HTML元素.元素会渲染 ...

  7. thinkphp,下载附件

    ThinkPHP框架下有个Org/Net/Http.class.php的方法download. Http.class.php的download方法如下 /** * 下载文件 * 可以指定下载显示的文件 ...

  8. c#与lua交互里,错误处理

    如果是c#代码出错了 [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] static int _g_get_down(RealStatePtr ...

  9. 我的Android进阶之旅------>Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项

    今天接到一个波兰的客户说有个APP在英文状态下一切运行正常,但是当系统语言切换到波兰语言的时候,程序奔溃了.所以首先我得把系统的语言切换到波兰语,问题是哪个是波兰语呢? 我还真的不认识哪个列表项代表着 ...

  10. 小木虫emuch遭封禁,新域名muchong.com尚可用

    各位虫友: 因为小木虫站点个别虫子违反论坛规定,擅自上传了政治擦边的违规资源.导致小木虫域名 emuch.net 被通信局封禁! 我们第一时间对违规资源进行了删除处理,接下来.我们也将大批量的对站内的 ...