2012-12-31 57 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