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

时间:2014-10-21 13:36:11

标签: android xmpp openfire smack asmack

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

  1. XMPP服务器:Openfire 3.9.3
  2. XMPP客户端:Asmack-android-8-4.0.4.jar
  3. 当我手动更改登录用户的存在时,我正面临一些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 个答案:

答案 0 :(得分:2)

  

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

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

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