zoukankan      html  css  js  c++  java
  • 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, 0)];
            
        }
        
    }

      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群:JRedu技术交流 (452379712)

    作者:杰瑞教育
    出处:http://www.cnblogs.com/jerehedu/ 
    本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
     
  • 相关阅读:
    Math 类、Random 类、BigDecimal 类
    Redis 持久化原理及过期 key 清除策略
    MySql 存储引擎和索引
    MySql 视图、触发器以及存储过程
    布隆过滤器
    微信红包实现原理
    11-散列3 QQ帐户的申请与登陆 (25 分)
    11-散列2 Hashing (25 分)
    11-散列1 电话聊天狂人 (25 分)
    C语言实现Linux之ls
  • 原文地址:https://www.cnblogs.com/jerehedu/p/4612484.html
Copyright © 2011-2022 走看看