zoukankan      html  css  js  c++  java
  • smack 4.1创建群聊

    smack 4.1.1版本对群聊修改了很多,MultUserChat的构造函数修改成了私有,以前通过new MultUserChat创建聊天室,现在通过MultUserChatMananger先通过roomId初始化一个聊天室.

     1 String roomId = "test003";
     2 String name="test_group_chat";
     3 String desc = "the test group chat";
     4 String nick="test";
     5 
     6 try {
     7 
     8     //获取房间管理对象
     9     MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(XmppConnectionManager.getInstance().getConnection());
    10     //创建一个房间
    11     MultiUserChat muc = manager.getMultiUserChat(StringUtils.getGroupRootFullId(roomId));
    12     muc.create(nick);
    13 
    14     // User1 (which is the room owner) configures the room as a moderated room
    15     Form form = muc.getConfigurationForm();
    16 
    17     Form answerForm = form.createAnswerForm();
    18     //向提交的表单添加默认答复,获取房间的默认设置菜单
    19     for(FormField field : form.getFields() ){
    20        if(!FormField.Type.hidden.name().equals(field.getType()) && field.getVariable() != null) {
    21            answerForm.setDefaultAnswer(field.getVariable());
    22         }
    23    }
    24 
    25     //muc#
    26     //房间名称
    27     answerForm.setAnswer(FormField.FORM_TYPE, "http://jabber.org/protocol/muc#roomconfig");
    28     //设置房间名称
    29     answerForm.setAnswer("muc#roomconfig_roomname",name);
    30     //设置房间描述
    31     answerForm.setAnswer("muc#roomconfig_roomdesc", desc);
    32     //是否允许修改主题
    33     answerForm.setAnswer("muc#roomconfig_changesubject", true);
    34 
    35     //设置房间最大用户数
    36     List<String> maxusers = new ArrayList<String>();
    37     maxusers.add("50");
    38     answerForm.setAnswer("muc#roomconfig_maxusers", maxusers);
    39 
    40 
    41     List<String> cast_values = new ArrayList<String>();
    42     cast_values.add("moderator");
    43     cast_values.add("participant");
    44     cast_values.add("visitor");
    45     answerForm.setAnswer("muc#roomconfig_presencebroadcast", cast_values);
    46     //设置为公共房间
    47     answerForm.setAnswer("muc#roomconfig_publicroom", true);
    48     //设置为永久房间
    49     answerForm.setAnswer("muc#roomconfig_persistentroom", true);
    50     //允许修改昵称
    51     answerForm.setAnswer("x-muc#roomconfig_canchangenick", true);
    52     //允许用户登录注册房间
    53     answerForm.setAnswer("x-muc#roomconfig_registration", true);
    54 
    55 
    56     muc.sendConfigurationForm(answerForm);
    57     muc.join(nick);
    58 
    59 } catch (XMPPException e) {
    60     e.printStackTrace();
    61 }catch (SmackException.NoResponseException e) {
    62     e.printStackTrace();
    63 } catch (SmackException.NotConnectedException e) {
    64     e.printStackTrace();
    65 }catch (SmackException e) {
    66     e.printStackTrace();
    67 }


  • 相关阅读:
    iOS:CoreData数据库的使用二(创建多个数据库表,表之间有对应关系)
    iOS:CoreData数据库的使用一(创建单个数据库表)
    iOS:第三方数据库文件FMDB的使用
    H.264 Profile、Level、Encoder三张简图 (fps = AVCodecContext->time_base.den / AVCodecContext->time_base.num)
    proftpd的示例配置文件
    linux定时器HZ和Jiffies
    labview
    linux c 及 c++打印调用者函数caller function的方法,包括arm c平台
    vim 设置 swap file, 防止 同一个文件同时被多次打开,而且有恢复的功效
    Make 命令教程
  • 原文地址:https://www.cnblogs.com/John5/p/4555622.html
Copyright © 2011-2022 走看看