java - 我如何从客户端知道 XMPP 服务器中是否存在帐户?

标签 java xmpp smack

我正在使用 Smack 库开发一个 IM 应用程序,但遇到了一些问题。

我想知道是否可以通过服务器中的用户名来检查用户是否存在。我的应用程序必须检查系统联系人列表中的人是否在我的服务器中开设了帐户并且他们不在他们的 friend 列表中。

到目前为止,我设法将系统联系人列表中的每个联系人添加到我用户的服务器联系人列表中 - 即使他们事先没有帐户 - 但这不是我要找的。

这是代码(Contact 就像是 Smack 的 RosterEntry 的包装类):

public void addAllContactsIfExisting(Contact[] contactsAgenda) {

    for (Contact contact: contactsAgenda) {
        if (!isContactMyFriend(contact)) {
            try {
                // I'd like to check for account existence here, being contact.getJid() the username as it'd be in the server
                conn.getRoster().createEntry(contact.getJid(), contact.getName(), null);
            } catch (XMPPException e) {
                e.printStackTrace();
            }
        }
    }
}

如果有帮助,我目前正在使用 Openfire 作为服务器。

最佳答案

您可以使用 UserSearch搜索特定用户的类,如果在服务器上未找到用户,则可以假定该用户未在服务器上注册。

关于java - 我如何从客户端知道 XMPP 服务器中是否存在帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5713594/

相关文章:

java - 在 Java 中生成唯一的随机数

Java使用的内存多于堆大小(或正确大小的Docker内存限制)

java - MultipleChatUser XMPP asmack 加入

android - 如何将 FCM 与 Ejabberd 集成?

java - 运行 savina 代码 https ://github. com/shamsimam/savina

ruby - 使用 Ruby,我如何确认 XML 片段是否有效?

php - Facebook XMPP 聊天 API 发送消息 PHP

android - Ejabberd:如果在客户端的 resume_timeout 之前发送,Xmpp 消息将被丢弃

android - 无法从 Android 上的 xmpp 服务器获取公共(public)房间列表?

java - jQuery 地址 - 表单提交后重定向