2016-07-07 19 views
-2

我想創建示例Java應用程序來實現XMPP的MultiUserChat。一些如何能夠在openfire中創建用戶並使其在線。任何人都可以建議如何將所有用戶加入創建的聊天室嗎?XMPP羣聊Java - 邏輯加入用戶在房間內邀請監聽器不工作

這是我在SampleMultiUserChat類中的示例代碼我邀請所有用戶加入該組,但它沒有加入。我錯過了什麼?

SampleMultiUserChat(){ 
    oConnectionConfiguration = new ConnectionConfiguration("10.10.1.105",5223); 
    createChatRoom(); 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    SampleMultiUserChat oSampleMultiUserChat = new SampleMultiUserChat(); 

    for(int i = 2; i < 4; i++){ 
     oSampleMultiUserChat.openXMPPConnection("user"+i); 
     oSampleMultiUserChat.createAcceptInvitationListener("user"+i); 
     oSampleMultiUserChat.inviteToJoinRoom("user"+i); 
    } 

    Thread mainThread = Thread.currentThread(); 
    while(true){ 
     try { 
      mainThread.sleep(500); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

private void openXMPPConnection(String user){ 
    XMPPConnection oXmppConnection = new XMPPConnection(oConnectionConfiguration); 
    try { 
     oXmppConnection.connect(); 
     oXmppConnection.login(user, "60474c9c10d7142b7508ce7a50acf414"); 
     userConnection.put(user, oXmppConnection); 
    } catch (XMPPException e) { 
     System.out.println("Exception occured in login in user : "+user); 
    } 
} 

private void createChatRoom(){ 
    XMPPConnection oXmppConnection = new XMPPConnection(oConnectionConfiguration); 
    try { 
     oXmppConnection.connect(); 
     oXmppConnection.login("user1", "60474c9c10d7142b7508ce7a50acf414"); 

     myChattingRoom = new MultiUserChat(oXmppConnection, "[email protected]"); 

     myChattingRoom.create("roomNickName"); 
     myChattingRoom.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); 
    } catch (XMPPException e) { 
     e.printStackTrace(); 
    } 
} 

private void inviteToJoinRoom(String user){ 
    myChattingRoom.invite(user+"@10.10.1.105", "Please join my chatting room"); 
    System.out.println("sent invitation by "+user); 
} 

private void sendMessage(String msg){ 
    try { 
     myChattingRoom.sendMessage(msg); 
    } catch (XMPPException e) { 
     System.out.println("Exception occured while sending msg to chat room"+e); 
    } 
} 

private void createAcceptInvitationListener(String user){ 
    MultiUserChat.addInvitationListener(userConnection.get(user), new InvitationListener() { 

     public void invitationReceived(Connection connection, String room, String inviter, 
       String reason, String password, Message msg) { 
      try { 
       myChattingRoom.join(connection.getUser().substring(0, connection.getUser().indexOf("@"))); 
      } catch (XMPPException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

在此先感謝。

+0

的[添加參與者XMPP聊天室]可能的複製(http://stackoverflow.com/questions/14098075/adding-participants-to-xmpp-聊天室) – legoscia

+0

我的問題是,即使我邀請用戶加入該組,用戶也不會加入該組。這是我的問題。任何想法? @ legoscia – Anonymous

+0

是的,如[本答案](http://stackoverflow.com/a/23953973/113848)中所述,無法強制用戶加入羣組:用戶收到邀請,必須決定如何/是否採取行動。 – legoscia

回答

0

我通過創建MultiUserChat的新實例解決了我的上述問題。

這裏是我的編輯方法 'createAcceptInvitationListener'

private void createAcceptInvitationListener(String user){ 
    System.out.println("inside create accept invitation listener"); 
    final XMPPConnection oXmppConnection = userConnection.get(user); 

    MultiUserChat.addInvitationListener(oXmppConnection, new InvitationListener() { 

     public void invitationReceived(Connection connection, String room, String inviter, 
       String reason, String password, Message msg) { 
      System.out.println("inside invitation received method"); 
      try { 
       System.out.println(connection.getUser().substring(0, connection.getUser().indexOf("@"))); 
       MultiUserChat myChattingRoom = new MultiUserChat(oXmppConnection, "[email protected]"); 

       myChattingRoom.join(connection.getUser().substring(0, connection.getUser().indexOf("@"))); 

      } catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println("Exception occured while joining the chat room : "+e); 
      } 
     } 
    }); 
} 

private void reservedRoomsCreation(MultiUserChat myChattingRoom) throws XMPPException{ 
    Form form = myChattingRoom.getConfigurationForm(); 
    Form submitForm = form.createAnswerForm(); 
    for(Iterator fields = form.getFields(); fields.hasNext();){ 
     FormField formFields = (FormField) fields.next(); 
     if (!FormField.TYPE_HIDDEN.equals(formFields.getType()) && formFields.getVariable() != null) { 
      submitForm.setDefaultAnswer(formFields.getVariable()); 
     } 
    } 
    submitForm.setAnswer("muc#roomconfig_persistentroom", true); 
    myChattingRoom.sendConfigurationForm(submitForm); 
}