在我的聊天应用程序中,我想实现这样一种功能:当用户已经登录并且希望在另一台设备上使用相同的用户名和密码进行登录时,应向用户返回一条消息 -“您已经在其他地方登录”。
我只知道这种检查登录状态的方法 -
但这并不能满足我的目的。
我只知道这种检查登录状态的方法 -
connection.isConnected();
但这并不能满足我的目的。
connection.isConnected();
Alex的答案是正确的,但我想稍微详细解释一下:
在成功登录后,您的XMPP-IM客户端将向服务器发送一个出席(presence)信息。然后,服务器会回复每个JID在您的花名册中的出席信息,并标记它们的订阅状态为“from”和“both”(RFC6121 XMPP-IM 4.2.2和4.4.2)。
第4.4.2节还指出:
The user's server MUST also send the presence stanza to all of the user's
available resources (including the resource that generated the presence
notification in the first place).
Iterator<Presence> Roster.getPresences(String user)
检索存在信息。调用看起来像这样:getPresences(XMPPConnection.getUser())
。(请注意,我没有验证它是否确实可行)。登录后,当您发送初始存在时,您会收到所有其他资源(设备)的存在。因此,请检查所有传入的存在,您将知道所有可用的连接。