打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
tigase下的聊天室创建与配置
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提供了哪些这里我就不一一列出了,国内使用的还是比较多的。

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





 

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android基于XMPP Smack Openfire下学习开发IM(三)会议室创建、加入以及查询会议室中所有成员等
CF名字
漫谈 IM 通信架构
Android Push开源方案解析
muc
美国1850万美元豪宅什么样
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服