gpt4 book ai didi

android - Openfire:即使我已经连接到 Openfire 服务器,也无法在几 (2-3) 小时后发送数据包

转载 作者:行者123 更新时间:2023-11-29 00:16:31 26 4
gpt4 key购买 nike

我正在使用以下软件进行 Android 聊天应用

  1. XMPP 服务器:Openfire 3.9.3
  2. XMPP 客户端:Asmack-android-8-4.0.4.jar

当我手动更改登录用户的存在时,我遇到了 Openfire 服务器的一些奇怪行为。

下面是我类的一段代码

xmppConfig.setSendPresence(false);
// Call first time only while configuration connection
presence = new Presence(Type.available, Constant.STATUS_ONLINE, 1, Mode.available);
// Code to change the presence of user
connection.sendPacket(presence);

正常日志,我可以在其中更改用户的存在(我在 Openfire 门户上检查过,它按可接受的方式工作):

SENT (1): <presence id='z13q2-27'><status>online</status></presence>
RCV (1): <presence id="z13q2-26" from="rayan@**********.com/Smack"
to="rayan@**********.com/Smack"><status>online</status></presence>

一些 (2-3) 小时后,当我返回应用程序并尝试将在线状态设置为在线时(我在 Openfire 门户上进行了检查,即使我将在线状态设置为在线状态,该用户仍显示离线状态)。

SENT (1): <presence id='z13q2-27'><status>online</status></presence>
//**** No packet replay of change presence *********

在上述情况下,我检查了以下值以检查用户是否仍处于连接状态,但我得到以下结果表明连接处于 Activity 状态且用户仍处于连接状态,但同时 Openfire (web )门户显示用户离线,

xmppManager.getConnection().isConnected()       //Result(true)
xmppManager.getConnection().isAuthenticated() //Result(true)
xmppManager.getConnection().isAnonymous() //Result(false)

在上述情况下,我无法向某人发送消息,也无法接收消息。


SENT (0): <message id='9388u-21' to='rayan@*********.com' type='chat'>
<subject>nullMedia</subject><body>Test message</body><custom_data>
<aliasNmae>Robine H.</aliasNmae><profilePicUrl></profilePicUrl>
</custom_data><request xmlns='urn:xmpp:receipts'/></message>

以上是我在上述场景后发送消息时的日志,这里是<custom_data>是我的自定义扩展。

即使我在 Openfire 中查看历史记录,在上述情况之后也没有存储任何消息。


I am not sure whether there is an option to maintain the long-lived connection over the Openfire server (web portal) or I am doing something wrong here with the XMPP client.

如果有人对这种奇怪的情况有一些想法,请指导我。

最佳答案

I checked below value after above scenario to check if user still connected , but i got below result which indicate that connection is alive

不,这些只是表明 Smack 不知道断开的连接。连接可能在图书馆不注意的情况下断开的原因有很多。

如果您想可靠地检查连接是否存在,请使用 PingManager.pingMyServer() .

关于android - Openfire:即使我已经连接到 Openfire 服务器,也无法在几 (2-3) 小时后发送数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26488083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com