How to properly listen for MultiUserChat in Smack?

孤街浪徒 提交于 2019-12-01 09:29:50

Since the Original Codes both Had Bugs, i used This code:

     PacketFilter messageFilter =

                new AndFilter(

                    new FromMatchesFilter(roomName+"@conference.reza-hp",true),

                    new MessageTypeFilter(Message.Type.groupchat));

            messageFilter = new AndFilter(messageFilter, new PacketFilter() {

                public boolean accept(Packet packet) {

                    Message msg = (Message) packet;

                    return msg.getBody() != null;



                }

            });

          addMessageListener(messageFilter);  
 }

    public static void addMessageListener(PacketFilter messageFilter) {

            connection.addPacketListener(new PacketListener() {

                @Override
                public void processPacket(Packet packet) throws NotConnectedException {
                     Message message = (Message)packet;  
                    String roomName = (message.getFrom().split("\\@conference.reza-
 hp"))[0];
                    String fromUser =    
 (StringUtils.parseResource(message.getFrom()).split("@\\@reza-hp"))[0];

                     System.out.println("=>"+"Room : "+roomName + "From   
 user:"+fromUser + ": "+message.getBody());  

                }
            }, messageFilter);



        }
MultiUserChat muc = new MultiUserChat(connection,"MyGroup"); muc.addMessageListener(new PacketListener() {
    @Override
    public void processPacket(Packet packet) throws NotConnectedException {
        // TODO Auto-generated method stub
    } });

is the correct way.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!