2010-12-29 7 views
0

Smack 및 ChatManager에 대한 추가 정보를 찾으려고 꽤 많이 검색했지만,별로 많지 않으므로 SOF에 올 시간입니다. 나는 내 코드의 특정 지점에서 아주 기본적인 것을하고 있어요Smack ChatManager가 제대로 작동하지 않습니다.

: 나는 채팅 난 그냥 만든 있는지 확인하기 위해 노력하고있어

chatmanager = con.getChatManager(); 
chatmanager.createChat(name, message.getThread(), 
new MessageListener() { 
    public void processMessage(Chat chat, Message message) { 
    } 
}); 
System.out.println("Chat created"); 
Chat chat = chatmanager.getThreadChat(message.getThread()); 
if (chat == null) 
    System.out.print("Newly created chat is null"); 
else 
    System.out.println("Newly created chat is saved in manager"); 

는 chatManager

에 실제로

chatmanager = con.getChatManager(); 

나는 느낌 EAC이 있습니다 내 프로그램에서 나는 이렇게 chatManager의 한 예를 지금까지 만들었지 만 여러 번이 h 시간이 지나면 chatManager가 다시 초기화됩니다. 나는 완전히 오인 하는가?

어쨌든, 문제는 출력이 나오지 않는다는 것입니다. "채팅은 null입니다."또는 "채팅이 저장되었습니다"도 아닙니다. chatManager가 문제를 일으킨다 고 믿게합니다.

아무도 도와 줄 수 있습니까?

+0

당신이 당신의 채팅 관리자를 게시 될까요, 메신저도 내 채팅이 한 방향으로 이동 –

답변

0

chatManager는 항상 연결에 직접 연결되어야합니다. 로그에 "만든 채팅을"

public synchronized ChatManager getChatManager() { 
    if (this.chatManager == null) { 
     this.chatManager = new ChatManager(this); 
    } 
    return this.chatManager; 
} 

당신이보고 있습니까 :

http://fisheye.igniterealtime.org/browse/smack/trunk/source/org/jivesoftware/smack/Connection.java?r=11613

당신은이 채팅 관리자에 대한 참조를 저장 볼 수 있습니다 여기에 원래 연결 클래스의 소스는 무엇입니까? 그 문제에 대해 ChatManager 나 Smack의 Google impl에 익숙하지 않지만 ChatManager는 채팅 개체에 스레드 ID의 간단한지도를 저장합니다.

+0

표시 어려움은 "만든 뒤 채팅"한을 표시 않는다 로그에 있지만 채팅을 확인할 때 Chat 객체가 null 인 것 같습니다. 나는 내 자신의 UUID로 모든 채팅 내용을 추적하는 자체 채팅 관리자를 만들었고 훨씬 더 잘 작동하고 있습니다. – Adam

0

채팅 관리자에 문제가 있습니까? 채팅을 하나 생성하기 전에 연결이 연결되어 있는지 확인하십시오.

그렇게하려면, 예를 들어 연락처 목록 검색 할 수 있습니다

 try { 
     connection.connect(); 
     connection.login(user, password); 
     System.out.println("Secured:" + connection.isSecureConnection()); 
     for (RosterGroup group : connection.getRoster().getGroups()) { 
      System.out.println(group.getName()); 
      for (RosterEntry entry : group.getEntries()) { 
       System.out.println("\t" + entry.getName() + "\t" + entry.getUser()); 
      } 
     } 
    } catch (XMPPException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
관련 문제