【问题标题】:Get list of all resources of roster entry获取名册条目的所有资源列表
【发布时间】:2012-03-29 20:14:17
【问题描述】:

我想获取我名册中某个人的所有(活动)资源的列表。 因此,例如“user1@gmail.com”如果该用户当前通过 GMail ('user1@gmail.com/gmail') 和 Pidgin 登录,我想获得类似 {'gmail', 'pidgin'} 的信息。

Smack 可以做到这一点吗?我知道有些客户会显示这些信息,例如XMPPHP 支持 getResources() 之类的东西,但 XMPPHP 是用于 PHP 的,不适用于 Google Talk,所以这对我没有多大帮助。

最好的问候

【问题讨论】:

    标签: xmpp smack


    【解决方案1】:

    使用 Smack,您需要在收到 Presence 数据包时对其进行跟踪。接收到的数据包的“发件人”将包含用户 JID 的资源。

    例如:

    private XMPPConnection connection;
    private PresenceListener listener = new PresenceListener();
    
    public void setConnection(XMPPConnection connection) {
        this.connection = connection;
    }
    
    public void createPresenceListener() {
        connection.addPacketListener(listener, new PacketTypeFilter(Presence.class));
    }
    
    public static class PresenceListener implements PacketListener {
        public void processPacket(Packet packet) {
            Presence presence = (Presence) packet;
            if (presence.getType() == null || presence.getType() == Presence.Type.available) {
                String from = presence.getFrom();
                if (from != null && from.lastIndexOf("/") > 0) {
                    String resource = from.substring(from.lastIndexOf("/") + 1);
                    // from here you can track all active resources
                }
            }
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-05
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多