我正在使用以下软件进行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客户端有关。
如果有人对这种奇怪的情况有所了解,请指导我。
答案 0 :(得分:2)
我在上面的场景之后检查了以下值,以检查用户是否仍然 连接,但我得到以下结果,表明连接是 活
不,这些只是表明Smack没有意识到连接断开。在没有图书馆注意的情况下,连接可能会被破坏的原因有很多。
如果您想要可靠地检查连接是否处于活动状态,请使用PingManager.pingMyServer()
。