【发布时间】:2016-12-12 10:15:46
【问题描述】:
我正在使用 jivesoftware Smack SDK 来实现实时聊天功能。 为了创建连接,我使用以下代码,
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setServiceName("world-pc");
config.setHost(serverAddress);
config.setPort(5222);
config.setDebuggerEnabled(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
XMPPTCPConnection.setUseStreamManagementDefault(true);
connection = new XMPPTCPConnection(config.build());
XMPPConnectionListener connectionListener = new XMPPConnectionListener();
connection.addConnectionListener(connectionListener);
connection.connect();
connection.login("username","password");
而且它工作得非常好。 现在的事情是,我想获取特定用户的在线状态或获取所有在线用户的列表。 我已经尝试了许多堆栈溢出的解决方案,但对我来说没有任何效果。 我尝试过的解决方案之一是,
Presence presence = new Presence(Presence.Type.available);
connection.sendPacket(presence);
Roster roster = xmppConnection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
Presence presence;
for(RosterEntry entry : entries) {
presence = roster.getPresence(entry.getUser());
System.out.println(entry.getUser());
System.out.println(presence.getType().name());
System.out.println(presence.getStatus());
}
这会返回一个列表,但所有用户的状态都是空的。 请有人帮我提供准确的解决方案。
谢谢
【问题讨论】:
-
您的客户发送 Presence 吗?
-
是的..请检查已编辑的问题