错误打击4.2关闭连接

时间:2017-03-27 09:30:01

标签: android ejabberd smack

我使用Ejabberd实现了新的Smack 4.2如果我没有登录或注册,我会在连接时关闭连接,因为我想在登录或注册之前创建连接。相同的代码在Openfire服务器上运行良好。

创建连接后,我在几秒钟(接近30秒)内收到此错误。      连接XMPPTCPConnection [未验证](0)因错误而关闭                                                                           org.jivesoftware.smack.XMPPException $ StreamErrorException:connection-timeout您可以在http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions了解有关此流错误含义的更多信息

在重新连接时,它会因此错误而崩溃

致命异常:Smack Reconnection Manager(0)java.lang.IllegalArgumentException:用户名不能为null或为空 在org.jivesoftware.smack.util.StringUtils.requireNotNullOrEmpty(StringUtils.java:468) 在org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:484) 在org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:448) 在org.jivesoftware.smack.ReconnectionManager $ 2.run(ReconnectionManager.java:254) 在java.lang.Thread.run(Thread.java:818)

一些配置代码行

 if (connection == null || !connection.isConnected()) {
        XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
                .builder();
        config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
        DomainBareJid serviceName = JidCreate.domainBareFrom(Constants.SERVER_NAME);
        config.setServiceName(serviceName);
        InetAddress inetAddress = InetAddress.getByName(Constants.HOST);
        config.setXmppDomain(Constants.SERVER_NAME);
        config.setHostAddress(inetAddress);
        config.setHost(Constants.HOST);
        config.setPort(Constants.PORT);
        config.setResource(Constants.RESOURCE);
        config.setDebuggerEnabled(true);
        SASLAuthentication.blacklistSASLMechanism("PLAIN");
        SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5");
        SASLAuthentication.unBlacklistSASLMechanism("SCRAM-SHA-1");
        XMPPTCPConnection.setUseStreamManagementDefault(true);
        connection = new XMPPTCPConnection(config.build());
        initializingMessageReceivedListeners();
        enableReConnection();
        connection.connect();
    }

提前致谢。

1 个答案:

答案 0 :(得分:0)

找到我自己的问题的解决方案Openfire允许创建连接,即使你没有登录但Ejabberd在几秒钟后中断但我们可以延迟这一次。