2017-03-27 1 views
1

Ejabberd로 새 Smack 4.2를 구현했습니다. 로그인하지 않았거나 등록하기 전에 연결이 끊어졌습니다. 로그인 또는 등록 전에 연결을 만들고 싶습니다. 동일한 코드가 Openfire 서버에서 잘 작동합니다.Error smack에서 연결이 끊어졌습니다. 4.2

연결이 생성 될 때 몇 초 (거의 30 초) 만에 오류가 발생합니다. 연결 XMPPTCPConnection [인증되지] (0) 오류 org.jivesoftware.smack.XMPPException $ StreamErrorException 폐쇄 : 연결 시간 초과 당신은 재 연결에 http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions

에서이 스트림 오류의 의미에 대한 자세한 내용을보실 수 있습니다 그것은 헤로인 재 연결 관리자 (0) java.lang.IllegalArgumentException가 : 사용자 이름이 org.jivesoftware.smack.util.StringUtils.requireNotNullOrEmpty에서 null 또는 비워 둘 수 없습니다 (StringUtils.java:468을

치명적인 예외 오류와 함께 충돌한다) (추상 XMP 연결. (AbstractXMPPConnection.java:448) at org.jivesoftware.smack.ReconnectionManager $ 2.run (ReconnectionManager.java:254) at 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(); 
    } 

미리 감사드립니다 구성의 코드

일부 라인.

+0

왜 코드를 추가하지 않으시겠습니까? – MrPk

+0

연결을 확인하는 중 사용자 이름이 null이거나 비어 있는지 확인하십시오. 사용자 이름이 null이거나 비어 있다는 로그가 명확하게 기록됩니다. –

+0

실제로 로그인 및 등록 전에 연결을 만들고 싶습니다. 연결조차도 생성되지만 몇 초 안에 끊어집니다. 로그인 및 등록을 수행하는 동안 시간을 ​​절약하기 전에 연결 만들기. 이것은 또한 Openfire에서 잘 작동합니다. Ejabberd로 설정을 변경해야합니까? – Neha

답변

0

내 질문에 대한 해결책을 찾았습니다. Openfire를 사용하면 로그인하지 않아도 Ejabberd가 잠시 중단 되더라도 연결을 만들 수 있지만이 시간을 지연시킬 수 있습니다.

관련 문제