在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而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使用简介--登录的更多相关文章

  1. iOS开发——网络编程OC篇&(二)XMPP实现用户登录与注销

    XMPP实现用户登录与注销 登录: 步骤: * 在AppDelegate实现登录 1. 初始化XMPPStream 2. 连接到服务器[传一个JID] 3. 连接到服务成功后,再发送密码授权 4. 授 ...

  2. XMPP协议简介

    XMPP(息处理现场协议)是基于可扩展标记语言(XML)的协议.它用于即时消息(IM)以及在线现场探測.XMPP协议採用的是client-server架构,全部从一个client发到还有一个clien ...

  3. XMPPFrameWork IOS 开发(一)xmpp简介

    原始地址:XMPPFrameWork IOS 开发(一) XMPP : The Extensible Messaging and Presence Protocol 中文全称: 可扩展通讯和表示协议 ...

  4. Strophe.js连接XMPP服务器Openfire、Tigase实现Web私聊、群聊(MUC)

    XMPP(Extensible Messaging and Presence Protocol)是一种网络即时通讯协议,它基于XML,具有很强的扩展性,被广泛使用在即时通讯软件.网络游戏聊天.Web聊 ...

  5. 【XMPP】XMPP协议之原理篇

    XMPP协议简介 XMPP协议(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是一种基于XML的协议. 目的是为了解决及时通信标准而提出 ...

  6. XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用

    Strophe简介与Openfire配置 Strophe.js是为XMPP写的一个js类库.因为http协议本身不能实现持久连接,所以strophe利用BOSH模拟实现持久连接. 官方文档: http ...

  7. 实现手机扫描二维码页面登录,类似web微信-第四篇,服务器端

    转自:http://blog.csdn.net/otangba/article/details/8273952 终于到了服务器端,第三篇的手机客户端如果已经下载了的话,没有服务器是不能正常运行的. 服 ...

  8. 给我一个及时的问候——XMPP

    XMPP总的来说就是:基于XML数据结构,点对点的,及时通讯协议 是 Linux操作系统+Apache软件+mySql数据库 + php 编程语言 组成   开始时要导入 XMPPFrameWork框 ...

  9. XMPP协议实现原理介绍

    本文介绍XMPP协议原理及相关信息. XMPP协议简介   XMPP(Extensible Messageing and Presence Protocol:可扩展消息与存在协议)是目前主流的四种IM ...

随机推荐

  1. TStringList 复制 赋值。

    方法1:list2.addstrings(list1) 特点是:不会清空list2中原有的数据. 方法2:list2.assign(list1) 特点是:会清空list2中原有的数据(直接替换链表节点 ...

  2. 两个inline-block元素上下不对齐,出现错位

    摘要: 声明:此文章为转载(点击查看原文),如有侵权24小时内删除.联系QQ:1522025433. 问题描述:在类似 <div class="ovh"> <h3 ...

  3. String中的toCharArray:将此字符串转换为新的字符数组,并统计次数

    package stringyiwen; public class StringTestToCharArray { public static void main(String[] args) { S ...

  4. HTML5——Data Url生成

    HTML5——Data Url生成 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  5. 东师理想云平台异步任务处理系统V2.0重构思路

    现存问题分析: 1.功能太多,而且杂糅到一个程序中,架构不清晰,出问题不好调试.2.系统重启后,不登录到桌面,程序不运行,用户体验差.经常的下载403等错误3.处理程序卡死,处理速度慢等问题,不支持多 ...

  6. 9.Django组件-cookie和session

    HTTP协议的无保存状态,对两次请求没有任何关联.每次请求都是相互独立的. 1.cookie简介 什么是会话跟踪技术我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会 ...

  7. 【Java】 剑指offer(44) 连续子数组的最大和

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 数字以0123456789101112131415…的格式序列化到 ...

  8. 第一章 Python入门

    一. 语言 计算机语言:人和计算机之间沟通的语言计算机语言: 按照级别分类:(越高级月进阶人类) 机器语言: 汇编语言: 助记符 ag. add 2 3 高级语言: c, PHP, java , .n ...

  9. Python3 图片水平镜像实现

    # -*- coding: utf-8 -*- """ Created on Sun Feb 4 12:15:38 2018 @author: markli " ...

  10. IdentityServer4-前后端分离的授权验证(六)

    上两节介绍完Hybrid模式在MVC下的使用,包括验证从数据获取的User和Claim对MVC的身份授权.本节将介绍Implicit模式在JavaScript应用程序中的使用,使用Node.js+Ex ...