XMPPFramework番外篇之XMPPJID

用户、房间(群组)都有一个XMPPJID,可以理解XMPPJID就是用户、房间的身份证号,唯一识别码。

1、用户XMPPJID组成规则

用户的完整的JID规则是username@domain/resource,其中username就是用户名称,domain和resource是我们之前在项目中设置好的,其中resource不必要,举例如下:

#define XMPP_DOMAIN                             @"127.0.0.1"//对应domain
#define XMPP_RESOURCE                           @"iOS"//对应resource
//创建XMPPJID对象
XMPPJID *userJID = [XMPPJID jidWithUser:@"cxf" domain:XMPP_DOMAIN resource:XMPP_RESOURCE];
//以上创建userJID为:cxf@127.0.0.1/iOS
//如果resource穿nil的话
XMPPJID *userJID2 = [XMPPJID jidWithUser:@"cxf" domain:XMPP_DOMAIN resource:nil];
//以上创建userJID2为:cxf@127.0.0.1
用户XMPPJID的full和bare
Bare就是除去resource部分
userJID.full即cxf@127.0.0.1/iOS;
userJID.bare即cxf@127.0.0.1;
userJID.full 和 userJID.bare都是cxf@127.0.0.1

2、房间XMPPJID组成规则

房间的XMPPJID组成和个人的组成有点区别,房间的完整的JID规则是roomname@subdomain.domain/nickname,其中roomname是房间的名称,subdomain和domain就是之前在项目中设置好的,nickname是用户加入房间时使用的昵称。举例如下:

#define XMPP_DOMAIN                             @"127.0.0.1"//对应domain
#define XMPP_SUBDOMAIN                          @"conference"//对应subdomain
NSString *roomId = [NSString stringWithFormat:@"%@@%@.%@",@"roomname",kXMPP_SUBDOMAIN,XMPP_DOMAIN];
XMPPJID *roomJID = [XMPPJID jidWithString:roomId];//创建房间的XMPPJID
//roomJID即roomname@conference.127.0.0.1,这个就可以代表这个房间
[xmppRoom joinRoomUsingNickname:@"cxf" history:nil];//xmppRoom即房间的对象,在XMPPFramework群聊章节有介绍,cxf即nickname
//如果你加入房间之后,获取到的房间jid就是roomname@conference.127.0.0.1/cxf
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 要学习基于XMPP协议的IM开发,首先要熟悉XMPP协议本身。 XMPP协议的组成主要的XMPP 协议范本及当今应...
    RichieQ阅读 1,909评论 0 6
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,446评论 0 9
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,921评论 0 5
  • 时间过得很快,我的第一份iOS工作做的就是IM应用(选用的是XMPP),如今也忘得差不多了.利用空闲时间来重写一遍...
    飘金阅读 2,984评论 2 2
  • 一、Xmpp资源绑定 XMPP协议设计中引入了一个抽象的资源绑定过程,何为资源,如何绑定?首先这得从JID的格式设...
    AndryYu阅读 2,903评论 0 3