smack 4.1.1版本对群聊修改了很多,MultUserChat的构造函数修改成了私有,以前通过new MultUserChat创建聊天室,现在通过MultUserChatMananger先通过roomId初始化一个聊天室.
 String roomId = "test003";
String name="test_group_chat";
String desc = "the test group chat";
String nick="test"; try { //获取房间管理对象
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(XmppConnectionManager.getInstance().getConnection());
//创建一个房间
MultiUserChat muc = manager.getMultiUserChat(StringUtils.getGroupRootFullId(roomId));
muc.create(nick); // User1 (which is the room owner) configures the room as a moderated room
Form form = muc.getConfigurationForm(); Form answerForm = form.createAnswerForm();
//向提交的表单添加默认答复,获取房间的默认设置菜单
for(FormField field : form.getFields() ){
if(!FormField.Type.hidden.name().equals(field.getType()) && field.getVariable() != null) {
answerForm.setDefaultAnswer(field.getVariable());
}
} //muc#
//房间名称
answerForm.setAnswer(FormField.FORM_TYPE, "http://jabber.org/protocol/muc#roomconfig");
//设置房间名称
answerForm.setAnswer("muc#roomconfig_roomname",name);
//设置房间描述
answerForm.setAnswer("muc#roomconfig_roomdesc", desc);
//是否允许修改主题
answerForm.setAnswer("muc#roomconfig_changesubject", true); //设置房间最大用户数
List<String> maxusers = new ArrayList<String>();
maxusers.add("50");
answerForm.setAnswer("muc#roomconfig_maxusers", maxusers); List<String> cast_values = new ArrayList<String>();
cast_values.add("moderator");
cast_values.add("participant");
cast_values.add("visitor");
answerForm.setAnswer("muc#roomconfig_presencebroadcast", cast_values);
//设置为公共房间
answerForm.setAnswer("muc#roomconfig_publicroom", true);
//设置为永久房间
answerForm.setAnswer("muc#roomconfig_persistentroom", true);
//允许修改昵称
answerForm.setAnswer("x-muc#roomconfig_canchangenick", true);
//允许用户登录注册房间
answerForm.setAnswer("x-muc#roomconfig_registration", true); muc.sendConfigurationForm(answerForm);
muc.join(nick); } catch (XMPPException e) {
e.printStackTrace();
}catch (SmackException.NoResponseException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}catch (SmackException e) {
e.printStackTrace();
}
												

smack 4.1创建群聊的更多相关文章

  1. Python3 itchat微信获取好友、公众号、群聊的基础信息

    Python3 itchat微信获取好友.公众号.群聊的基础信息 一.简介 安装 itchat pip install itchat 使用个人微信的过程当中主要有三种账号需要获取,分别为: 好友 公众 ...

  2. Python网络编程(子进程的创建与处理、简单群聊工具)

    前言: 昨天我们已经了解了多进程的原理以及它的实际使用 Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊.普通的函数调用,调用一次,返回一次, 但是fork()调用一次,返回两次 ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. Socket通信 简单实现私聊、群聊(dos命令下)

    很久以前的一个Demo,这里服务器只做转发功能,根据ID地址和端口号来标识身份,群聊和私聊只是简单实现, 服务器代码如下: import java.util.*; import java.io.*; ...

  5. Strophe.js连接XMPP服务器Openfire、Tigase实现Web私聊、群聊(MUC)

    XMPP(Extensible Messaging and Presence Protocol)是一种网络即时通讯协议,它基于XML,具有很强的扩展性,被广泛使用在即时通讯软件.网络游戏聊天.Web聊 ...

  6. Java-->实现群聊功能(C/S模式--TCP协议)

    --> Java 对TCP协议的支持: --> java.net包中定义了两个类ServerSocket 和Socket ,分别用来实现双向连接的server 端和client 端. -- ...

  7. 环信SDK 头像、昵称、表情自定义和群聊设置的实现 一(附源码)

    前言: 环信的SDK在公司的项目中有用到,现在用到的是群聊的部分,这里我们分析总结一下自己对环信给的DEMO大概的拆解一下,说说我们怎么样充分的利用这个demo来写我们所需要的业务.这个也由于篇幅的原 ...

  8. Tinychatserver: 一个简易的命令行群聊程序

    这是学习网络编程后写的一个练手的小程序,可以帮助复习socket,I/O复用,非阻塞I/O等知识点. 通过回顾写的过程中遇到的问题的形式记录程序的关键点,最后给出完整程序代码. 0. 功能 编写一个简 ...

  9. SignalR实现消息推送,包括私聊、群聊、在线所有人接收消息(源码)

    一.关于SignalR 1.简介:Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面, ...

随机推荐

  1. 【openStack】Libcloud 如何支持 keystone V3?

    Examples This section includes some examples which show how to use the newly available functionality ...

  2. Excel2013 基本用法(下)

    排序 按行/列排序 选择单元格,点击"排序"(点击之后自动全选) 点击选项,弹出"排序选项",根据自己需要选择按行排序/按列排序. 输入排序条件. 确定. 复杂 ...

  3. 使用KRPano资源分析工具一键下载全景网站切片图

    软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...

  4. Selenium使用

    定位 1.普通 by id, name,class_name,link_text 2.加强 xpath css

  5. CentOS下采用Crontab实现PHP脚本定时任务

    简单实现一个需求,每5分钟往特定表中插入2条数据.经过分析还是采用crontab方式靠谱,另外执行php脚本的方式,不用担心链接超时等问题. 1.准备工作,创建1个数据表“person”, CREAT ...

  6. dvd开发小程序

    package dvdManager8; import java.util.Scanner; public class DvdSystem8 { static String[][] dvd = new ...

  7. mvc架构

    mvc是三个单词的缩写,他们是Model(模型),view(视图),controller(控制) 1)最上面的一层,是直接面向最终用户的"视图层"(View).它是提供给用户的操作 ...

  8. 常用 Git 命令

    拉取远端仓库代码: 如果本地已经存在文件夹,先cd进去,然后敲命令: git fetch (作用是拉取远端仓库里的代码) git merge (作用是将远端仓库里的代码与本地仓库里的代码合并,如果有冲 ...

  9. Lintcode 375.克隆二叉树

    -------------------------- 水题 AC代码: /** * Definition of TreeNode: * public class TreeNode { * public ...

  10. list for循环中删除元素

    Iterator.remove() is safe, you can use it like this: List<String> list = new ArrayList<> ...