一、简介XEP-0060
XEP-0060是一个XMPP协议扩展来实现实现通用的 发布-订阅 功能。这个协议使 XMPP实体能在一个pubsub服务创建节点(主题)并发布信息到那些节点上;然后一个事件通知(携带或未带载荷)被广播到所有订阅了该节点的实体. PubSub因此坚持了经典的观察者设计模式,并可以作为广泛应用的服务基础,包括新闻提要,内容整合,富出席信息,地理位置,工作流系统,网络管理系统,以及任何其他需要事件通知的应用。
二、文档
官方文档:https://xmpp.org/extensions/xep-0060.html
中文翻译文档:http://wiki.jabbercn.org/XEP-0060
三、代码块
创建订阅-推送对象
@property (nonatomic, strong) XMPPPubSub * xmppPubSub;
发布订阅由MT发布,所以此代码块只有订阅功能。
#pragma mark -- 推送、订阅回调
- (void)setupPubSub:(NSString *)MT_Sn
{
//订阅 推送 模块
NSString * pubsub_auto_domain_name = @"pubsub.auto.hooca.com.cn";
XMPPJID * pubsub_jid = [XMPPJID jidWithString:pubsub_auto_domain_name];
_xmppPubSub = [[XMPPPubSub alloc]initWithServiceJID:pubsub_jid];
[_xmppPubSub activate:_xmppStream];
[_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString * myjid = [defaults objectForKey:MYRESJID];
NSString * subnode = [NSString stringWithFormat:@"mt_%@_notify_node_id",MT_Sn];
XMPPJID * myresjid = [XMPPJID jidWithString:myjid];
[_xmppPubSub subscribeToNode:subnode withJID:myresjid];
}
- (void)cancelPubSub:(NSString *)MT_Sn
{
//订阅 推送 模块
NSString * pubsub_auto_domain_name = @"pubsub.auto.hooca.com.cn";
XMPPJID * pubsub_jid = [XMPPJID jidWithString:pubsub_auto_domain_name];
_xmppPubSub = [[XMPPPubSub alloc]initWithServiceJID:pubsub_jid];
[_xmppPubSub activate:_xmppStream];
[_xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString * myjid = [defaults objectForKey:MYRESJID];
NSString * subnode = [NSString stringWithFormat:@"mt_%@_notify_node_id",MT_Sn];
XMPPJID * myresjid = [XMPPJID jidWithString:myjid];
// [_xmppPubSub subscribeToNode:subnode withJID:myresjid];
[_xmppPubSub unsubscribeFromNode:subnode withJID:myresjid];
}
网友评论