iOS基于XMPP实现即时通讯之一、环境的搭建
移动端访问不佳,请访问我的个人博客
使用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就彻底消失了.但是需要重启一下系统偏设置。
总结
配置过程还是比较繁琐的,一共需要好几个步骤,需要装的有MySQL、JAVA环境和openfire,里面有一步没做好都没法使用,自己完整配置下来也花了很长时间,大家如果有什么问题可以留言问我,谢谢大家的阅读~~
参考文档:
http://www.cnblogs.com/xiaodao/archive/2013/04/04/2999426.html
http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html
iOS基于XMPP实现即时通讯之一、环境的搭建的更多相关文章
- Android基于XMPP的即时通讯3-表情发送
这篇博文主要讲表情发送的一些东西. 参考:Android基于XMPP的即时通讯1-基本对话 1.准备好资源文件 采用的是emoji的表情,我打包好了,下载地址:http://files.cnblogs ...
- Android基于XMPP的即时通讯2-文件传输
本文是在上一篇博文Android基于XMPP的即时通讯1-基本对话的基础上,添加新的功能,文件传输 1.初始化文件传输管理类 public static FileTransferManager get ...
- Android基于xmpp的即时通讯应用
xmpp是一个通信协议.因为这是个开放的协议,为了节俭开发成本,很多即时应用都采用了这个协议.Android上最常用的组合asmack +openfire.Asmack是smack的android版, ...
- 【XMPP】基于XMPP的即时通讯解决方案
什么是XMPP 介绍XMPP之前,先来看看GTalk. GTalk是Google推出的IM(Instant Messaging,即时通讯)软件,类似于QQ和MSN. 从技术角度来说,GTalk与QQ和 ...
- Android基于XMPP的即时通讯1-基本对话
闲暇之余,自己写了个简单的即时通讯,基于OpenFire服务器平台. 整个项目包括两个部分,一个是服务器端,一个是android手机端: 一.关于服务器端没什么好说的,下载安装配置即可 推荐下载带ja ...
- IOS基于XMPP协议开发--XMPPFramewok框架(一):基础知识
最近蘑菇街团队的TT的开源,使我对im产生了兴趣,然后在网上找到了XMPPFramework进行学习研究, 并写了以下系列教程供大家参考,有写的不对的地方,请大家多多包涵指正. 目录索引 IOS基于X ...
- 基于XMPP的即时通信系统的建立(一)— XMPP基础概念
相关背景 IM(Instant Messaging)正在被广泛使用,特别是公司与它们的客户互动连接方案以及互联网与Web2.0相关的应用.为了解决即时通信的标准问题,IETF(互联网工程任务组 The ...
- [iOS]从零开始开发一个即时通讯APP
前言 这是我的毕业设计.刚开始确定这个课题的时候是因为以前有稍微研究过一些XMPP协议,在这个基础上做起来应该不难.然后开始选技术的时候还有半年,我想为什么不从更底层做起呢!那就不用XMPP,当时接触 ...
- 基于openfire+smack即时通讯instant message开发
前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也有其他的选择. Openfire 是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使 ...
随机推荐
- 最近5年133个Java面试问题列表
Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...
- boost::interprocess::shared_memory_object(1)(基本类型)
#include <iostream> #include <boost/interprocess/managed_shared_memory.hpp> struct pos2d ...
- Nginx/LVS/HAProxy 负载均衡软件的优缺点对比
Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术,具体的应用需求还得具体分析. 如果是中小型的Web应用,比 ...
- 让WebApi支持Namespace
环境:VS2012 .net 4.0 参考: http://aspnet.codeplex.com/SourceControl/changeset/view/dd207952fa86#Samples/ ...
- linux系统各种日志存储路径和详细介绍
Linux常见的日志文件详述如下1./var/log/boot.log(自检过程)2./var/log/cron (crontab守护进程crond所派生的子进程的动作)3./var/log/mail ...
- 《深入理解Linux网络技术内幕》阅读笔记 --- 路由基本概念
一.路由的基本概念 1.一条路由就是一组参数,这些参数存储了往一个给定目的地转发流量所需的信息,而一条路由所需的最少的参数集合为:(1)目的网络,(2)出口设备,(3)下一跳网关 2.路由中的相关术语 ...
- mysql 中sum (if())与case
先来一个简单的sum select sum(qty) as total_qty from inventory_product group by product_id 这样就会统计出所有product的 ...
- 内置模块(time、random、hashlib、os)
简介: 模块:本质上就是一个.py文件,使用其中的函数. 模块分为:内置函数.第三方模块.自定义模块. 今天学习的就是Python的内置函数. 回到顶部 一.time模块 1.时间的表示形式 在Pyt ...
- MySQL(单表的表记录的操作)
一.表记录的增删改查 1.增加表记录 <1>插入一条记录: insert [into] tab_name (field1,filed2,.......) values (value1,va ...
- php socket 处理只是来数据流,该怎样避免(好像是堵塞了)
php socket 处理只是来数据流,该怎样处理(好像是堵塞了) 需求:php接受一个硬件往8888port上发送数据,假设收到后,应socket_send函数返回"\xFA\x01\x0 ...