分享

tigase下的聊天室创建与配置

 WindySky 2016-04-10
1最近在做一个即时通讯的项目,客户端用的是安卓asmark,服务端用的是tigase。

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

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

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

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

tigase下创建聊天室

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

openfire下创建聊天室

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

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

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

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

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

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

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

1submitForm.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条评论

    发表

    请遵守用户 评论公约

    类似文章 更多