获取名册条目的所有资源列表
Posted
技术标签:
【中文标题】获取名册条目的所有资源列表【英文标题】: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,所以这对我没有多大帮助。
最好的问候
【问题讨论】:
【参考方案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
【讨论】:
以上是关于获取名册条目的所有资源列表的主要内容,如果未能解决你的问题,请参考以下文章