2012-12-31 25 views
8

我想在我的应用程序中实现群聊,为此,我正在使用MUC聊天室来实现此功能。将参与者添加到XMPP聊天室

在这里,我想添加一个成员列表(我有JID的)到房间。 我想将它们内部添加到列表中的所有成员。我如何添加他们而不邀请他们。

在添加成员后,我希望实现一项功能,即每当聊天室的用户发送消息或聊天时,都应将其发送给所有其他用户。

的主要问题是如何将成员添加到聊天室

代码:

private void createRoom(){ 

     MultiUserChat privateRoom = new MultiUserChat(connection, "[email protected]"); 
     try { 
      privateRoom.join("gaurav","123456"); 
      privateRoom.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); 
      System.out.println("Room Created!!!"); 

      Message message = new Message("[email protected]", Message.Type.normal); 
      message.setBody("Happy User"); 

      privateRoom.sendMessage(message); 



     } catch (XMPPException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

回答

2

XEP-0045不包含这样一个场景,一个客户端强制做了一个聊天室的参与者。尽管您可以向联系人发送邀请(直接发送给用户或通过MUC服务器),但联系人实际上并未加入聊天室,直到联系人的客户端请求加入聊天室。

因此,将用户添加到聊天室而不邀请他们需要用户的客户端的特殊支持。可能的话,可以修改客户端以自动接受来自可信联系人的聊天室邀请。

+0

你能否建议一种机制来邀请用户进行群聊?我正在使用可以邀请用户的代码,但另一个最终用户没有收到任何邀请(可以在邀请侦听器中侦听)。 –

+0

我会使用[XEP-0249](http://xmpp.org/extensions/xep-0249.html)中描述的“Direct MUC Invitations”协议。这是[XEP-0045,第7.8节](http://xmpp.org/extensions/xep-0045.html#invite)中大多数情况下推荐的方法,并且应该有更好的机会到达其他用户。 – legoscia