不会为已发布的pubsub消息

时间:2015-11-03 14:55:08

标签: ejabberd smack

我正在尝试在pubsub机制上实现MUC,因此对于每个MUC组,我将邀请发送给多个人。在MUC的invitationReceivedListener中,我获得了pubsub节点和addItemEventListener。现在,当我向组内发送消息时,我将项目发布到pubsub节点,它在另一端发送(我可以从下面显示ejabberd日志),但不调用ItemEventListener。

为什么我的itemEventListener没有被调用? 我注意到的另一件事是,在ejabberd日志示例下,每次接收器登录都会继续循环。所以它似乎继续多次向接收者发送相同的消息。

代码

//Subscribing to node
multiUserChatManager.addInvitationListener(new InvitationListener() {
        @Override
        public void invitationReceived(XMPPConnection connection_,
                MultiUserChat muc, String invitor, String reason, String password,Message msg) {
            try {

                System.out.println("in invitation Recieved----------------");
                //Subscribe to node
                LeafNode node=(LeafNode)pubSubMgr.getNode(parseName(muc.getRoom()));   
                addMessageListenerToPubSubNode(node);

                node.subscribe(username+"@abc.mydomain.com");
                System.out.println("Subscribing to node "+node.getId());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }
    });


//Declaration of event Listener
private void addMessageListenerToPubSubNode(LeafNode node) {
    node.addItemEventListener(new ItemEventListener(){
    @Override
    public void handlePublishedItems(ItemPublishEvent itemEvents) {
            List<PayloadItem> item = itemEvents.getItems();
            System.out.println("^^^^^^^^^^^^^^Received Item thru pubsub Item="+item.toString());
            for(PayloadItem i:item)
            {
                System.out.println("message in the item on pubsub="+i.toXML());
            }
        }
    }
    );

}

Ejabberd Logs

我可以在我的ejabberd日志中看到以下消息,但是在收件人端没有调用ItemEventListener(+999999是我的接收者而+888888是我的发送者)。

2015-11-03 20:51:18.795 [debug] <0.2230.0>@ejabberd_c2s:send_text:1892 Send XML on stream = 
<<"<message from='pubsub.abc.mydomain.com' to='+999999@abc.mydomain.com' type='headline'>
   <event xmlns='http://jabber.org/protocol/pubsub#event'><items type='headline' node='03aa73745fa14e30bd72f66c9861f528'>
    <item id='5A689B43B9777'><x xmlns='jabber:x:oob'>
      <file1url>1446564035727125000.jpeg</file1url>
      <postuuid>5522fbbc-5c4d-46af-bc65-b0a4b5777cdc</postuuid>
    </x></item></items>
   </event>    
   <delay xmlns='urn:xmpp:delay' from='+888888@abc.mydomain.com/+888888' stamp='2015-11-03T15:20:35Z'>
   </delay>
</message>">>

1 个答案:

答案 0 :(得分:1)

实际上我找到了解决方案 问题是,每次应用程序打开时我都没有添加监听器。每次打开应用程序时我都需要addeventlistener。这解决了不接收消息的问题