tigase下的聊天室创建与配置

来源:互联网 发布:director.js 编辑:程序博客网 时间:2024/06/05 19:26
最近在做一个即时通讯的项目,客户端用的是安卓asmark,服务端用的是tigase。

本人是第一次写博客来分享经验,是一只开发小菜鸟,希望这些经验可以让其他人少走些弯路。

好了废话进不多说了,开始正题。

现在开发xmpp及时通讯,大多是使用openfire,国内使用tigase还是较少的。遇到问题总是各种查。查不到也就只能自己一个个慢慢试了

创建聊天室的代码很简单,但是使用不同的服务端还是有区别的。

tigase下创建聊天室

MultiUserChat muc = new MultiUserChat(ClientConServer.connection, roomName                  + "@muc." + ClientConServer.connection.getServiceName());         // 创建聊天室          muc.create(roomName);

openfire下创建聊天室

MultiUserChat muc = new MultiUserChat(ClientConServer.connection, roomName                  + "@conference." + ClientConServer.connection.getServiceName());         // 创建聊天室          muc.create(roomName);

大家看到区别了吗? 当初楼主我使用了openfire的代码在tigase下创建房间结果tigase返了 404,s2s错误,到处找这个错误的解决方式。呵呵,都怪楼主学艺不精啊。

创建完聊天室,就该进行了聊天室的属性进行配置了。至于聊天室有哪些属性,大家可以去看协议(群聊协议xep 0045)。不过不同的服务端对实现的协议的内容是不一样的

要对房间的属性进行配置,就得从服务端拿到对应的表单。根据楼主debug的结果,openfire返回的表单信息大概有25条。而tigase只有13条。

不过openfire和tigase获取表单的代码是一样的

Form form = muc.getConfigurationForm();   // 根据原始表单创建一个要提交的新表单。  
Form submitForm = form.createAnswerForm();
for (Iterator<FormField> fields = form.getFields(); fields                    .hasNext();) {                FormField field = (FormField) fields.next();                if (!FormField.TYPE_HIDDEN.equals(field.getType())                        && field.getVariable() != null) {                    // 设置默认值作为答复                    submitForm.setDefaultAnswer(field.getVariable());                }            } 

获取到的表单之后就得进行配置了。

submitForm.setAnswer("muc#roomconfig_persistentroom", true);

以上这个方法多个重载方法。第一个参数是根据服务端提供的来写的,如果所写的是tigase不提供的就会报java.lang.IllegalArgumentException

现在我们就来看看tigase提供了哪些。

muc#roomconfig_roomname  房间名称
muc#roomconfig_roomdesc  房间描述
muc#roomconfig_persistentroom 房间是持久的
muc#roomconfig_publicroom    Make Room Publicly Searchable
muc#roomconfig_moderatedroom  房间是临时的
muc#roomconfig_membersonly 房间仅对成员开放
muc#roomconfig_passwordprotectedroom 需要密码才能进入的房间
muc#roomconfig_roomsecret    设置房间密码
muc#roomconfig_anonymity  匿名的房间
muc#roomconfig_changesubject 允许占有者更改主题
muc#roomconfig_enablelogging 登陆房间对话
muc#maxhistoryfetch

在tigase下能配置的房间属性也就只有这些了。至于openfire提供了哪些这里我就不一一列出了,国内使用的还是比较多的。

第一次写博客写的不咋样,大家勿喷哈!写博客是为何和大家分享经验,希望大家也积极参与,共同学习,共同进步。微笑





 

 

 

0 0
原创粉丝点击