Android 错误smack 4.2时连接关闭

Android 错误smack 4.2时连接关闭,android,ejabberd,smack,Android,Ejabberd,Smack,我用Ejabberd实现了新的Smack 4.2,如果我不登录或注册,我会在出现错误时关闭连接,因为我想在登录或注册之前创建连接。同样的代码在Openfire服务器上运行良好 在建立连接的几秒钟内(将近30秒),我就遇到了这个错误。 连接XMPPTCPConnection[未经身份验证](0)已关闭,但出现错误 org.jivesoftware.smack.XMPPException$StreamErrorException:connection timeout您可以在以下位置阅读有关此流错误含

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

在建立连接的几秒钟内(将近30秒),我就遇到了这个错误。 连接XMPPTCPConnection[未经身份验证](0)已关闭,但出现错误 org.jivesoftware.smack.XMPPException$StreamErrorException:connection timeout您可以在以下位置阅读有关此流错误含义的更多信息:

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

致命异常:Smack重新连接管理器(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) 运行(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();
    }

提前感谢。

找到了我自己问题的解决方案Openfire允许在您未登录时创建连接,但Ejabberd会在几秒钟后中断,但我们可以延迟此时间。

找到了我自己问题的解决方案Openfire允许在您未登录时创建连接,但Ejabberd会在几秒钟后中断秒,但我们可以延迟此时间。

为什么不添加一些代码?在连接时检查您的用户名是否为null或空。日志清楚地提到用户名为null或空。实际上我想在登录和注册之前创建连接。即使建立了连接,也会在几秒钟内中断。在登录和注册之前创建连接可以节省时间。这也适用于Openfire。我是否需要对Ejabberd进行任何配置更改?为什么不添加一些代码?在连接时检查您的用户名是否为null或空。日志清楚地提到用户名为null或空。实际上我想在登录和注册之前创建连接。即使建立了连接,也会在几秒钟内中断。在登录和注册之前创建连接可以节省时间。这在Openfire中也可以正常工作。我需要对Ejabberd进行任何配置更改吗?我可以知道,你是如何解决的吗?我可以知道,你是如何解决的吗?