Tigase客戶端Jaxmpp使用之發布訂閱(三)

2021-06-28 11:23:35 字數 3469 閱讀 5722

發布訂閱 方法

a: 1:修改

init.properties配置檔案,啟用發布訂閱組建

--virt-hosts = domain.com

--comp-name-2 = pubsub

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

2:建立乙個

node節點

實際上,每個訂閱者都是關聯到該節點上,發布者將訊息發布到建立的該節點上,進而間接的發布給所有的訂閱者。

pubsubdomain= 

[email protected];

pubsubmodulemodule = 

jaxmpp

.getmodulesmanager().getmodule(pubsubmodule.

class);

module.createnode(barejid.

barejidinstance

(pubsubdomain),nodename,

newpubsubasynccallback()

public

voidonsuccess(stanza responsestanza) 

throwsjaxmppexception

protected

voidoneror(iq response, errorcondition errorcondition,

pubsuberrorconditionpubsuberrorcondition) 

throwsjaxmppexception

});3:客戶端訂閱 //

組建name+ @ + domain.com

pubsubjid= barejid.

barejidinstance

(「[email protected]」)

nodename= 「nodename」 //

建立的節點名

subscriberjid= 「

[email protected]

」 //

訂閱者pubsubmodulemodule = 

jaxmpp

.getmodulesmanager().getmodule(pubsubmodule.

class);

module.subscribe(pubsubjid,nodename, subscriberjid, 

newsubscriptionasynccallback()

protected

voidoneror(iq response, errorcondition errorcondition,

pubsuberrorconditionpubsuberrorcondition) 

throwsjaxmppexception

protected

voidonsubscribe(iq response, string node, jid jid, string subid,

subscriptionsubscription)

});4:發布

(必須要有發布許可權的帳號,才能發布

)barejid = barejid.

barejidinstance

(「[email protected]

」)//參考3

訂閱的pubsubjid

nodename = 「」; //發布到那個

node節點

itemid = 「itemid_001」; //item節點的

idelemententry = 

newdefaultelement(

"entry");

elementtitle = 

newdefaultelement(

"title");

title.setvalue(

"發布標題");

elementsummary = 

newdefaultelement(

"summary");

summary.setvalue(

"發布的訊息

.....");

entry.addchild(title);

entry.addchild(summary);

jaxmpp

.getmodulesmanager().getmodule(pubsubmodule.

class)

.publi****em(barejid,nodename, itemid, entry, 

newpubsubasynccallback()

public

voidonsuccess(stanza responsestanza) 

throwsjaxmppexception

protected

voidoneror(iq response, errorcondition errorcondition,

pubsuberrorconditionpubsuberrorcondition) 

throwsjaxmppexception

});jaxmpp

.disconnect();

5:解除訂閱

jaxmpp().getmodulesmanager().getmodule(pubsubmodule.

class).unsubscribe 方法

b:1:

init.properties

新增如下**,通過二級網域名稱使用發布訂閱元件。各引數含義,參考官網配置

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

2:其餘**同上,不過

pubsubdomain

需要修改為

pubsub.domain.com

發布訂閱協議及其他功能,參考官方的擴充套件協議

發布訂閱協議的英文文件

發布訂閱協議翻譯後的中文文件

瘦客戶端 胖客戶端 智慧型客戶端

胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...

胖客戶端 瘦客戶端和富客戶端

以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...

非同步客戶端和同步客戶端

先寫下我的理解,方便後邊閱讀資料校驗。一 同步客戶端 比如乙個連線有兩個請求,請求1 和 請求2,請求1 先發起請求,請求2後發起請求,則請求2 要等待請求1 響應完成才能接收到響應。舉個棗子,httpclient 傳送get請求,執行緒會一致阻塞,直到有響應結果。二 非同步客戶端 比如乙個連線有兩...