Smack提供了一套發(fā)布訂閱消息的功能API。代碼如下:
發(fā)布:
- package com.bis.pub;
-
- import org.jivesoftware.smack.XMPPConnection;
- import org.jivesoftware.smackx.pubsub.LeafNode;
- import org.jivesoftware.smackx.pubsub.PayloadItem;
- import org.jivesoftware.smackx.pubsub.PubSubManager;
- import org.jivesoftware.smackx.pubsub.SimplePayload;
-
- public class XmppPubsub_Publisher {
- private static XMPPConnection connection = new XMPPConnection("wang-think");
- private static String USRE_NAME = "t1";
- private static String PASSWORD = "1";
-
- static{
- try {
- connection.connect();
- connection.login(USRE_NAME,PASSWORD);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void main(String[] args)throws Exception{
-
- try{
- PubSubManager manager = new PubSubManager(connection);
- String nodeId = "zyf_test2";
-
- LeafNode myNode = null;
- try {
- myNode = manager.getNode(nodeId);
- } catch (Exception e) {
- e.printStackTrace();
- }
- if(myNode == null){
- myNode = manager.createNode(nodeId);
- }
-
- String msg = "fsadfasdfsadfasdfd---";
-
- SimplePayload payload = new SimplePayload("message","pubsub:test:message", "<message xmlns='pubsub:test:message'><body>"+msg+"</body></message>");
- PayloadItem<SimplePayload> item = new PayloadItem<SimplePayload>("5", payload);
-
- myNode.publish(item);
- System.out.println("-----publish-----------");
- }
- catch(Exception E)
- {E.printStackTrace();}
-
- }
-
- }
訂閱:
- package com.bis.pub;
-
- import org.jivesoftware.smack.XMPPConnection;
- import org.jivesoftware.smackx.pubsub.ItemPublishEvent;
- import org.jivesoftware.smackx.pubsub.Node;
- import org.jivesoftware.smackx.pubsub.PayloadItem;
- import org.jivesoftware.smackx.pubsub.PubSubManager;
- import org.jivesoftware.smackx.pubsub.listener.ItemEventListener;
-
- public class XmppPubsub_Reciever {
- private static XMPPConnection connection = new XMPPConnection("wang-think");
- private static String USRE_NAME = "t2";
- private static String PASSWORD = "1";
-
- static {
- try {
- connection.connect();
- connection.login(USRE_NAME, PASSWORD);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public static void main(String[] args) throws Exception {
- String nodeId = "zyf_test2";
- PubSubManager manager = new PubSubManager(connection);
- Node eventNode = manager.getNode(nodeId);
- eventNode.addItemEventListener(new ItemEventListener<PayloadItem>() {
- public void handlePublishedItems(ItemPublishEvent evt) {
- for (Object obj : evt.getItems()) {
- PayloadItem item = (PayloadItem) obj;
- System.out.println("--:Payload=" + item.getPayload().toString());
- }
- }
- });
- eventNode.subscribe(connection.getUser());
- while(true);
- }
- }
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。