移动端访问不佳,请访问我的个人博客
使用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)实现的即时通信服务器端版本,目前建议使 ...
随机推荐
-
推荐15款创建漂亮幻灯片的 jQuery 插件
对于设计师,开发者,摄影师或任何创造性的个人和企业,他们自己的网站是展示他们的技能和服务的最佳场所.你可能打算设计一个新的个人作品网站,不管你是从头开始或使用模板,都会需要使用 jQuery 幻灯片插 ...
-
POJ 1149PIGS 网络流 最大流
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20421 Accepted: 9320 Description ...
-
[设计模式]<;<;设计模式之禅>;>;关于开闭原则
开闭原则是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统,先来看开闭原则的定义: Software entities like classes,modules and fun ...
-
(Relax DFS专题1.2)POJ 2386 Lake Counting(使用DFS来计算有多少坨东西是连通的)
题目大意:有N*M的矩阵稻田,'W'表示有积水的地方, '.'表示是干旱的地方,问稻田内一共有多少块积水,根据样例很容易得出,积水是8个方向任一方向相连即可. 题目大意:有N*M的矩阵稻田,'W'表示 ...
-
一键源码安装Ansible
#!/bin/bash # @Name:install_ansible.sh # @Author:Eivllom # @Create -- # @Modify -- app_soft="/a ...
-
iOS XMPP之常见错误一:(<;failure xmlns=";urn:ietf:params:xml:ns:xmpp-sasl";>;<;not-authorized/>;<;/failure>;)
在XMPP开发中,使用XMPPStream进行连接服务器后,验证过程中,比较常见的一个错误是 <failure xmlns="urn:ietf:params:xml:ns:xmpp-s ...
-
leetcode[68] Climbing Stairs
n个台阶,每次可以走一步或者两步,总共有多少种走法. 第一感觉想到的是递归,n为1的时候1种,2的时候2中.其他时候就是 fun(n) = fun(n-1) + fun(n-2);递归的代码很简单.如 ...
-
Jvm类的加载机制
1.概述 虚拟机加载Class文件(二进制字节流)到内存,并对数据进行校验.转换解析和初始化,最终形成可被虚拟机直接使用的Java类型,这一系列过程就是类的加载机制. 2.类的加载时机 类从被虚拟机加 ...
-
POJ 2453
#include <iostream> #include <algorithm> #include <cmath> #define MAXN 1000 #defin ...
-
[工具] Sublime Text 使用指南
http://bbs.it-home.org/thread-46291-1-1.html 摘要(Abstract) 更新记录 更正打开控制台的快捷键为Ctrl + ` 更正全局替换的快捷键为Ctrl ...