我如何知道指定的 JID 是不是已经连接到服务器?

Posted

技术标签:

【中文标题】我如何知道指定的 JID 是不是已经连接到服务器?【英文标题】:How do I know if JID specified is already connected to the server?我如何知道指定的 JID 是否已经连接到服务器? 【发布时间】:2016-09-30 13:40:27 【问题描述】:

我正在尝试寻找解决方案来检查用户是否通过jid作为参数登录,但没有成功。

我想知道是否有一种方法可以在我不必登录服务器的情况下进行检查。在登录之前验证 jid 是否已经登录,然后使用阻止访问的消息进行处理。我正在使用 agsXMPP 库。 有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

您可以尝试通过 JID 直接从服务器获取状态,而无需登录。例如在明火中:

http://example.com:9090/plugins/presence/status?jid=jsmith@example.com&type=xml

会让您返回用户状态,以便您知道他是否在线。

我不相信 agxmpp sdk 本身有任何这样的方法。

【讨论】:

我该怎么做?因为当我调用检查是否存在帐户的方法时,它会被注销。它通过 JID 检查出席名单,但这是在公共服务器中处理的,并且协议的方法是异步的。 你能改写你的问题吗?我的意思是任何人(匿名)都应该能够在给定 JID(服务器端当然需要配置)的情况下获得公开存在,这将表明用户是在线还是离线。这不是 100% 可靠的,因为如果用户因注销以外的任何其他原因而退出,则在场联合中总会出现一些延迟。 好的,但碰巧我想在没有任何登录的情况下检查用户的存在。 EX:如果您有一个帐户 X 并想登录服务器,但要验证该帐户是否已被其他人登录,如果您已登录,则通知说该帐户已被使用。发生的情况是,如果我要登录帐户 X 并且已经有另一个连接的人,服务器会简单地断开在验证我之前建立的连接。 通过在登录前进行此检查,我消除了我的应用程序中的这个问题,但并不完全是因为外部客户。这应该是规则服务器。如果您有任何想法,请。 ***.com/questions/39918099/…

以上是关于我如何知道指定的 JID 是不是已经连接到服务器?的主要内容,如果未能解决你的问题,请参考以下文章

使用非 digid jid 连接到 facebook throw xmpp

使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败

如何获取 XMPP IOS 框架的 JID

连接到 facebook 聊天服务器,没有响应

使用 JDBC 连接到 postgres 时是不是可以指定架构?

使用 JDBC 连接到 postgres 时是不是可以指定模式?