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 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。