首页 文章

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

提问于
浏览
2

我使用以下软件进行Android聊天应用程序

当我手动更改登录用户的存在时,我正面临一些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 *********

我在上面的场景之后检查了下面的值来检查用户是否仍然连接,但是我得到了以下结果,表明连接是活动的并且用户仍然连接,但同时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中检查历史记录,在上述方案之后也没有存储消息 .


我不确定是否有一个选项来维护Openfire服务器(Web门户)上的长期连接,或者我在这里使用XMPP客户端做错了什么 .

如果有人对这种奇怪的情况有所了解,请指导我 .

1 回答

  • 2

    我在上面的场景之后检查了以下值以检查用户是否仍然连接,但是我得到了下面的结果,表明连接是活的

    不,这些只是表明Smack没有意识到连接断开 . 在没有图书馆注意的情况下,连接可能会被破坏的原因有很多 .

    如果要可靠地检查连接是否处于活动状态,请使用PingManager.pingMyServer() .

相关问题