XMPP使用简介--登录
在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现,实现了整个及时通信服务协议的互通。有了这个协议之后,使用任何一个组织或者个人提供的即使通信服务,都能够无障碍的与其他的及时通信服务的用户进行交流。例如google 公司2005年推出的Google talk就是一款基于XMPP协议的即时通信软件。下面我们就谈论一下如何简单的使用XMPP
| 一、环境的搭建,本文采用的是openFire 服务器 |
1、下载最新openfire for mac版 http://www.igniterealtime.org/downloads/index.jsp
2、点击下面图标进行安装JDK 和服务器

3、启动后,点击Open Admin Console按钮,自动在浏览器中打开本地web配置页面http://localhost:9090/setup/index.jsp然后进行服务器配置
4、将语言设置为中文即可

5、设置服务器地址为本机

6、设置数据库

在执行此步骤之前需要做一些准备工作,
1创建数据库 :create database openfire;2导入openfire资源文件夹 resources/database下的数据表:source /usr/local/openfire/resources/database/openfire_mysql.sql
7、特性设置

8、设置openfire服务器管理员的帐号和密码

9、安装完成,点击按钮登录

登录后界面如下

10、按照上面操作创建用户密码

11、此时的准备工作基本完成
| 二 导入XMPP |
1、将XMPP全部导入工程

2、导入依赖包

由于动态库的存在因此需要做以下操作


| 三、到目前为止我们的XMPP成功导入到项目中,下面我们开始编码实现用户登录 |
1、在代理里面引入包,并且定义流属性

2、初始化并且添加代理
#pragma mark 初始化
- (void)setUpStream{ if (_stream==nil) { //1 初始化stream
_stream=[[XMPPStream alloc] init]; //2 添加代理
[_stream addDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, )]; } }
3、建立连接
#pragma mark 建立链接
//建立连接
- (void) connect{ //1 初始化
[self setUpStream]; //2 制定服务器地址,用户名,密码
NSString * userName=@"jereh@jereh.local";
NSString * hostName=@"jereh.local"; //3 设置JID和主机
XMPPJID * jid=[XMPPJID jidWithString:userName]; [self.stream setMyJID:jid];
[self.stream setHostName:hostName]; //4 开始连接
NSError * error;
[self.stream connectWithTimeout:XMPPStreamTimeoutNone error:&error]; if (error) {
NSLog(@"发送连接请求失败");
}else{
NSLog(@"发送连接请求成功");
} }
5、进行密码验证,通过代理方法返回结果
#pragma mark 验证身份请求
-(void)xmppStreamDidConnect:(XMPPStream *)sender{ NSLog(@"链接成功"); //发送身份验证请求
NSString * pwd=@"jereh123";
[self.stream authenticateWithPassword:pwd error:nil];
} #pragma mark 密码正确
- (void) xmppStreamDidAuthenticate:(XMPPStream *)sender{ NSLog(@"身份验证成功"); //通知服务器上线
[self onLine];
} #pragma mark 密码错误
- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error{ NSLog(@"身份验证失败");
}
6、开始连接

想要了解更多内容的小伙伴,可以点击查看源码,亲自运行测试。
疑问咨询或技术交流,请加入官方QQ群:
(452379712)
出处:http://www.cnblogs.com/jerehedu/
本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
XMPP使用简介--登录的更多相关文章
- iOS开发——网络编程OC篇&(二)XMPP实现用户登录与注销
XMPP实现用户登录与注销 登录: 步骤: * 在AppDelegate实现登录 1. 初始化XMPPStream 2. 连接到服务器[传一个JID] 3. 连接到服务成功后,再发送密码授权 4. 授 ...
- XMPP协议简介
XMPP(息处理现场协议)是基于可扩展标记语言(XML)的协议.它用于即时消息(IM)以及在线现场探測.XMPP协议採用的是client-server架构,全部从一个client发到还有一个clien ...
- XMPPFrameWork IOS 开发(一)xmpp简介
原始地址:XMPPFrameWork IOS 开发(一) XMPP : The Extensible Messaging and Presence Protocol 中文全称: 可扩展通讯和表示协议 ...
- Strophe.js连接XMPP服务器Openfire、Tigase实现Web私聊、群聊(MUC)
XMPP(Extensible Messaging and Presence Protocol)是一种网络即时通讯协议,它基于XML,具有很强的扩展性,被广泛使用在即时通讯软件.网络游戏聊天.Web聊 ...
- 【XMPP】XMPP协议之原理篇
XMPP协议简介 XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML的协议. 目的是为了解决及时通信标准而提出 ...
- XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用
Strophe简介与Openfire配置 Strophe.js是为XMPP写的一个js类库.因为http协议本身不能实现持久连接,所以strophe利用BOSH模拟实现持久连接. 官方文档: http ...
- 实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端
转自:http://blog.csdn.net/otangba/article/details/8273952 终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的. 服 ...
- 给我一个及时的问候——XMPP
XMPP总的来说就是:基于XML数据结构,点对点的,及时通讯协议 是 Linux操作系统+Apache软件+mySql数据库 + php 编程语言 组成 开始时要导入 XMPPFrameWork框 ...
- XMPP协议实现原理介绍
本文介绍XMPP协议原理及相关信息. XMPP协议简介 XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM ...
随机推荐
- vue2之 missing param for named route "xxxx"
场景: 解决方法:可以做的是将其包含router-link在适当的位置v-if,以便在您的异步数据实际到达之前不会尝试渲染. html代码: <div id="app" cl ...
- vue-cli 搭建的项目处理不同环境下请求不同域名的问题
使用 vue-cli 开发项目过程中, 根据开发环境和正式环境不同, 我们往往需要请求不同域名下的后台接口, 这时候, 该怎么去设置, 达到同一种写法可以根据环境不同而自动切换请求域名呢? 本文将会介 ...
- java 标签编译后没有显示
1.原因现在还不知,试了几个地方可以和不可以 /** * @author feilong */ public class OverLoading { /**@param args put here c ...
- jquery----语法扩展(导入js文件)
简单使用 第一步,新建js文件 第二步,在js文件中添加 $.extend({ "GDP": function () { console.log("哈哈哈哈") ...
- jquery----ajax解决scrf问题
前端ajax请求 $.ajax({ type:"PUT", //请求方式为put dataType:"JSON", url:'/updata/user/', d ...
- 性能测试二十八:环境部署之Dubbo部署
Zookeeper部署 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...
- python接口自动化测试二十三:文件上传
# 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s ...
- Hibernate之一级缓存和二级缓存
1:Hibernate的一级缓存: 1.1:使用一级缓存的目的是为了减少对数据库的访问次数,从而提升hibernate的执行效率:(当执行一次查询操作的时候,执行第二次查询操作,先检查缓存中是否有数据 ...
- Linux环境下Node.js的安装配置
1. 官网下载Node.js 2. 安装Node.js 根据下载内容的不同,提供三种安装方法,选择自己喜欢的方式 2.1. 绿色免安装版(Linux(.tar.gz)) 解压Node-XX ...
- 【AtCoder】AGC018
A - Getting Difference 我们肯定可以得到这些数的gcd,然后判断每个数减整数倍的gcd能否得到K #include <bits/stdc++.h> #define f ...