XMPP学习记录三:关于连接服务器

原创 2013年12月05日 13:57:37

XMPP中常用对象们:

XMPPStreamxmpp基础服务类

XMPPRoster好友列表类

XMPPRosterCoreDataStorage好友列表(用户账号)在core data中的操作类

XMPPvCardCoreDataStorage好友名片(昵称,签名,性别,年龄等信息)在core data中的操作类

XMPPvCardTemp好友名片实体类,从数据库里取出来的都是它

xmppvCardAvatarModule好友头像

XMPPReconnect如果失去连接,自动重连

XMPPRoom提供多用户聊天支持

XMPPPubSub发布订阅


第一步 生成xmppstream对象 并且设置委托

  1.    
  2. -(void)setupStream{    
  3.         
  4.     //初始化XMPPStream    
  5.     xmppStream = [[XMPPStream alloc] init];    
  6.     [xmppStream addDelegate:self delegateQueue:dispatch_get_current_queue()];    
  7.         
  8. }  


第二步 设置登陆帐户名字与服务器名字,并连接

  1. -(BOOL)connect{    
  2.         
  3.     [self setupStream];    
  4.         
  5.     //从本地取得用户名,密码和服务器地址    
  6.     NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    
  7.         
  8.     NSString *userId = [defaults stringForKey:USERID];    
  9.     NSString *pass = [defaults stringForKey:PASS];    
  10.     NSString *server = [defaults stringForKey:SERVER];    
  11.         
  12.     if (![xmppStream isDisconnected]) {    
  13.         return YES;    
  14.     }    
  15.         
  16.     if (userId == nil || pass == nil) {    
  17.         return NO;    
  18.     }    
  19.         
  20.     //设置用户    
  21.     [xmppStream setMyJID:[XMPPJID jidWithString:userId]];    
  22.     //设置服务器    
  23.     [xmppStream setHostName:server];    
  24.     //密码    
  25.     password = pass;    
  26.         
  27.     //连接服务器    
  28.     NSError *error = nil;    
  29.     if (![xmppStream connect:&error]) {    
  30.         NSLog(@"cant connect %@", server);    
  31.         return NO;    
  32.     }    
  33.         
  34.     return YES;    
  35.     
  36. }    

连接服务器

  1. //启动连接操作后,回调函数(委托函数)  
  2.   
  3. - (void)xmppStreamWillConnect:(XMPPStream *)sender将被调用,表示将要连接  
  4.   
  5. - (void)xmppStreamDidConnect:(XMPPStream *)sender//登陆服务器成功  
  6.   
  7. {  
  8.   
  9.     NSError *error = nil;  
  10.   
  11.     //验证帐户密码  
  12.   
  13.     NSString *password = @"test1";  
  14.   
  15.     BOOL bRes =  [_xmppStream authenticateWithPassword:password error:&error];  
  16.   
  17. }  


验证账号
  1. //验证成功的回调函数  
  2.   
  3. - (void)xmppStreamDidAuthenticate:(XMPPStream *)sender  
  4.   
  5. {  
  6.   
  7.     XMPPPresence *presence = [XMPPPresencepresence];  
  8.     //可以加上上线状态,比如忙碌,在线等  
  9.     [[selfxmppStream] sendElement:presence];//发送上线通知  
  10.   
  11. }  
  12.   
  13. //验证失败的回调  
  14.   
  15. - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(NSXMLElement *)error  

相关文章推荐

XMPP协议学习笔记三(Openfire服务器端搭建开发环境)

     在了解了XMPP的基本结构和一些概念之后,我们暂时告别枯燥的理论学习,来动手搭建一下Openfire+Spark的开发环境,实际感受一下搭建整套IM通讯系统的过程。开发环境:windows ...

XMPP协议学习笔记三(Openfire服务器端搭建开发环境)

在了解了XMPP的基本结构和一些概念之后,我们暂时告别枯燥的理论学习,来动手搭建一下Openfire+Spark的开发环境,实际感受一下搭建整套IM通讯系统的过程。 开发环境:windows...

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

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

Android studio使用smack连接xmpp服务器收发消息

我使用的是ejabberd16.09的linux版本,安装教程网上有很多,我在这里只介绍一下android端连接、登录和收发消息的方法。 ejabberd官网地址:点击打开链接     进入正题,我使...

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

转自:http://blog.csdn.net/xiao__gui/article/details/42642573 版权声明:本文为博主原创文章,未经博主允许不得转载。 XM...
  • xyy511
  • xyy511
  • 2016年05月25日 10:43
  • 860

使用xmpp库loudmouth连接google talk服务器

google talk的通信协议采用的是xmpp,xmpp是开放协议。gmail邮箱中的聊天功能就是基于这个协议实现的吧。xmpp客户端协议都多种语言实现包括 javascript,c,c++,c#,...

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

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

gloox连接xmpp服务器

先从官网下载gloox的压缩包。 下载地址:http://camaya.net/glooxd/download/ 因为gloox是个c++的库,所以我用的是visual studio 2013编译的,...

XMPP协议学习笔记四(Openfire服务器启动过程)

在上篇文章中我们成功部署了openfire的源码,这一篇我们来初步了解一下openfire的项目结构。 概述     Openfire最主要的功能是实现XMPP服务器,简单来说,openf...

XMPP协议学习笔记四(Openfire服务器启动过程)

在上篇文章中我们成功部署了openfire的源码,这一篇我们来初步了解一下openfire的项目结构。 概述     Openfire最主要的功能是实现XMPP服务器,简单来说,openfir...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:XMPP学习记录三:关于连接服务器
举报原因:
原因补充:

(最多只允许输入30个字)