MultiUserchat.join() method never returns

Hello Smack devs,

I am trying to join all the MultiUserChat as soon as my client got authenticated. I managed to store a list of joined MUC on client side but i am facing following issue while doing that.

When my client got authenticated and then when i execute the MultiUserChat.join() this method never returns and i can join only the one room at the moment and i can see that user has joined a MUC on the server side as well as i can send/receive a message to that MUC.

Is there any way that i can join multiple MUC at the same time and can set up a listners on each MUC so i can receive a messages from each and every MUC which i am part of.

I am attaching the code snippet of my Main method which is as per following

public static void main(final String[] args) {

		Scanner sc = new Scanner(;

		System.out.println("enter username ");
		final String username = sc.nextLine();

		System.out.println("enter password ");
		final String password = sc.nextLine();

		try {

			// This method will give you TCP connection object from the smack.
			final XMPPTCPConnection connection = GetXmppConnection.getConnection(username, password);
					"Connected :-  " + connection.isConnected() + " Authenicated " + connection.isAuthenticated());

			System.out.println("Enter Room id");
			final MultiUserChatManager mucManager = MultiUserChatManager.getInstanceFor(connection);

			Thread thread = new Thread(new Runnable() {

				public void run() {

					try {

						MultiUserChat muc = mucManager

						Resourcepart nickName = Resourcepart.from(username);
						MucEnterConfiguration mucEnterConfiguration = muc.getEnterConfigurationBuilder(nickName)

						if (!muc.isJoined()) {

						// This code will never execute.
						System.out.println("Muc Joined sucessfully !!! ");

						Set joinedRooms = mucManager.getJoinedRooms();

						for (EntityBareJid entityBareJid : joinedRooms) {
							System.out.println(String.format("Room name %s", entityBareJid.asBareJid()));

						System.out.println(String.format("%s Room joined sucessfully", "abcd"));

					} catch (Exception e) {


			System.out.println("Press something to send a message");
			String line = sc.nextLine();

			while (!line.equals("stop")) {

				System.out.println("To : - ");
				String to = sc.nextLine();

				System.out.println("Enter Message to send :- ");
				String body = sc.nextLine();

				String stanzaId = String.valueOf(new Date().getTime());

				Message message = new Message();

				System.out.println(String.format("Message %s ", message.toXML(null)));

				System.out.println("Press stop to stop sending message or something else to continue again");
				line = sc.nextLine();



		} catch (Exception e) {


I am using following libs to make this happen

Smack - 4.3.4
openfire - 4.4.2
Java JDK - 1.8

Please suggest anything or let me know if i am doing anything wrong.


This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.