Tigase客户端Jaxmpp使用之发布订阅(三)

http://blog.csdn.net/jerry0827/article/details/8860731


https://wiki.asterisk.org/wiki/display/AST/Distributed+Device+State+with+XMPP+PubSub

发布订阅

方法A

1:修改init.properties配置文件,启用发布订阅组建

--virt-hosts = domain.com

--comp-name-2 = pubsub

--comp-class-2 =tigase.pubsub.PubSubComponent


2:创建一个Node节点

实际上,每个订阅者都是关联到该节点上,发布者将消息发布到创建的该节点上,进而间接的发布给所有的订阅者。

pubSubDomain= pubsub@domain.com;

PubSubModulemodule = jaxmpp.getModulesManager().getModule(PubSubModule.class);

module.createNode(BareJID.bareJIDInstance(pubSubDomain),nodeName,

newPubSubAsyncCallback() {

publicvoidonTimeout() throwsJaxmppException {

}

publicvoidonSuccess(Stanza responseStanza) throwsJaxmppException {

}

protectedvoidonEror(IQ response, ErrorCondition errorCondition,

PubSubErrorConditionpubSubErrorCondition) throwsJaxmppException {

}

});


3:客户端订阅

//组建name+ @ + domain.com

pubSubJID= BareJID.bareJIDInstance(“pubsub@domain.com)

nodeName= “nodeName” //创建的节点名

subscriberJID= “test1@domain.com” //订阅者

PubSubModulemodule = jaxmpp.getModulesManager().getModule(PubSubModule.class);

module.subscribe(pubSubJID,nodeName, subscriberJID, newSubscriptionAsyncCallback() {

publicvoidonTimeout() throwsJaxmppException {

}

protectedvoidonEror(IQ response, ErrorCondition errorCondition,

PubSubErrorConditionpubSubErrorCondition) throwsJaxmppException {

}

protectedvoidonSubscribe(IQ response, String node, JID jid, String subID,

Subscriptionsubscription) {

}

});


4:发布(必须要有发布权限的帐号,才能发布)

bareJID = BareJID.bareJIDInstance(“pubsub@domain.com)//参考3订阅的pubSubJID

nodeName = “”; //发布到那个Node节点

itemId = “itemId_001”; //item节点的ID


Elemententry = newDefaultElement("entry");

Elementtitle = newDefaultElement("title");

title.setValue("发布标题");

Elementsummary = newDefaultElement("summary");

summary.setValue("发布的消息.....");


entry.addChild(title);

entry.addChild(summary);

jaxmpp.getModulesManager().getModule(PubSubModule.class)

.publishItem(bareJID,nodeName, itemId, entry, newPubSubAsyncCallback() {

publicvoidonTimeout() throwsJaxmppException {

}

publicvoidonSuccess(Stanza responseStanza) throwsJaxmppException {

}

protectedvoidonEror(IQ response, ErrorCondition errorCondition,

PubSubErrorConditionpubSubErrorCondition) throwsJaxmppException {

}

});

jaxmpp.disconnect();


5:解除订阅

Jaxmpp().getModulesManager().getModule(PubSubModule.class).unsubscribe



方法B

1init.properties添加如下代码,通过二级域名使用发布订阅组件。各参数含义,参考官网配置

http://www.tigase.org/content/tigase-xmpp-server-configuration-properties

--external= pubsub.domain.com:pubsub-pass:connect:5270:localhost:accept


2:其余代码同上,不过pubSubDomain需要修改为pubsub.domain.com



发布订阅协议及其他功能,参考官方的扩展协议

http://xmpp.org/extensions/xep-0060.html 发布订阅协议的英文文档

http://wiki.jabbercn.org/XEP-0060 发布订阅协议翻译后的中文文档


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值