【问题标题】:Getting Smackx PubSub working让 Smackx PubSub 工作
【发布时间】:2011-07-23 19:53:45
【问题描述】:

我有以下代码:

        PubSubManager manager = new PubSubManager(connection, "pubsub.openfire.local");
        LeafNode myNode = (LeafNode) manager.createNode("NewNode", form);

        SimplePayload payload = new SimplePayload("session", "pubsub:NewNode:session", "<sessionId>1234</sessionId>");


        // putting null for id means you let server generate id
        PayloadItem<SimplePayload> item = new PayloadItem<SimplePayload>(null, payload);

        // you could use publish() for asynchronous call
        myNode.send(item);

我在尝试发送节点值时不断收到以下错误:

冲突(409) 在 >org.jivesoftware.smackx.pubsub.packet.SyncPacketSend.getReply(SyncPacketSend.java:53) 在 >org.jivesoftware.smackx.pubsub.packet.SyncPacketSend.getReply(SyncPacketSend.java:61) 在 >org.jivesoftware.smackx.pubsub.PubSubManager.sendPubsubPacket(PubSubManager.java:324) 在 >org.jivesoftware.smackx.pubsub.PubSubManager.sendPubsubPacket(PubSubManager.java:318) 在 org.jivesoftware.smackx.pubsub.PubSubManager.createNode(PubSubManager.java:134) 在 PubSubPublisher.main(PubSubPublisher.java:33)

希望有任何关于如何调试或继续前进的想法。谢谢。

【问题讨论】:

    标签: java openfire publish-subscribe


    【解决方案1】:

    您尝试创建的节点已经存在。请先致电getNode 和/或deleteNode,然后再致电createNode。将您的代码包装在 try/catch 块中以处理可能被抛出的 XMPPException。

    LeafNode myNode = null;
    try{
      try{
        LeafNode existingNode = manager.getNode("NewNode");  
        //exists, so delete
        manager.deleteNode("NewNode");
      }catch(XMPPException e){
        //'getNode' threw an exception.
        //so we know that the node did not exist
      }
      myNode = (LeafNode) manager.createNode("NewNode", form);
    }catch(XMPPException e){
      System.err.println(e);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2013-03-29
      • 2019-01-09
      • 1970-01-01
      • 2012-11-06
      • 2014-03-11
      • 2010-09-27
      相关资源
      最近更新 更多