<html>
<head>
<title>多人聊天</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div class="header">多人聊天</div><p>
允许构造,参与,并管理个别的基于文本的会议聊天室。<p>
<ul>
<li><a href="#create">创建新聊天室</a></li>
<li><a href="#join">加入聊天室</a></li>
<li><a href="#invite">控制聊天室邀请</a></li>
<li><a href="#discomuc">查看MUC支持</a></li>
<li><a href="#discojoin">查看已加聊天室</a></li>
<li><a href="#discoroom">查看聊天室信息</a></li>
<li><a href="#privchat">开始私聊</a></li>
<li><a href="#subject">管理聊天室主题变更</a></li>
<li><a href="#role">管理角色变更</a></li>
<li><a href="#afiliation">管理从属关系变更</a></li>
</ul>
<b>JEP related:</b> <a href="http://www.jabber.org/jeps/jep-0045.html">JEP-45</a>
<hr>
<div class="subheader"><a name="create">创建新聊天室</a></div><p>
<b>描述</b><p>
被许可的可以用户创建新的聊天室.您可以创建两类聊天室。<b>Instant rooms</b>适用立即进入和基于一些默认配置自动创建。<b>Reserved rooms</b>在允许其它人进入之前由聊天室创建者手动配置。</p>
<b>用法</b><p>
要创建聊天室您需要首先创建<i><b>MultiUserChat</b></i>的一个实例。聊天室名字通过构造方法传递给要创建的聊天室。下一骤是调用<i><b>MultiUserChat</b></i>的<b>create(String nickname)</b>方法在这里nickname是加入聊天室用的昵称。</p><p>
根据您要创建的聊天室的类型您需要使用不同配置表单。要创建一个Instant room调用<b>sendConfigurationForm(Form form)</b>方法在这里表单是一个空表单。但是如果您想创建一个Reserved room您应该首先获得聊天室的配置表单,完成表单,最后将它发送回服务器。</p>
<b>范例</b><p>
在这个例子中我们可以看到如何创建一个instant room:<br>
<blockquote>
<pre> <font color="#3f7f5f">// 使用XMPPConnection创建一个MultiUserChat</font>
MultiUserChat muc = new MultiUserChat(conn1, <font color="#0000FF">"myroom@conference.jabber.org"</font>);
<font color="#3f7f5f">//创建聊天室</font>
muc.create(<font color="#0000FF">"testbot"</font>);
<font color="#3f7f5f">// 发送一个空表单配置这显示我们想要一个instant room</font>
<font color="#3f7f5f"></font>
muc.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
</pre>
</blockquote>
在这个例子中我们可以看到如何创建一个reserved room.表单使用默认值完成: <br>
<blockquote>
<pre> <font color="#3f7f5f">// 使用XMPPConnection创建一个MultiUserChat</font>
MultiUserChat muc = new MultiUserChat(conn1, <font color="#0000FF">"myroom@conference.jabber.org"</font>);
<font color="#3f7f5f">// 创建聊天室</font>
muc.create(<font color="#0000FF">"testbot"</font>);
<font color="#3f7f5f">// 获得聊天室的配置表单</font>
Form form = muc.getConfigurationForm();
<font color="#3f7f5f">// 根据原始表单创建一个要提交的新表单。</font>
Form submitForm = form.createAnswerForm();
<font color="#3f7f5f">// 向要提交的表单添加默认答复</font>
for (Iterator fields = form.getFields(); fields.hasNext();) {
FormField field = (FormField) fields.next();
if (!FormField.TYPE_HIDDEN.equals(field.getType()) && field.getVariable() != null) {
<font color="#3f7f5f">// 设置默认值作为答复</font>
submitForm.setDefaultAnswer(field.getVariable());
}
}
<font color="#3f7f5f">// 设置聊天室的新拥有者</font>
List owners = new ArrayList();
owners.add(<font color="#0000FF">"johndoe@jabber.org"</font>);
submitForm.setAnswer(<font color="#0000FF">"muc#roomconfig_roomowners"</font>, owners);
<font color="#3f7f5f">// 发送已完成的表单(有默认值)到服务器来配置聊天室</font>
muc.sendConfigurationForm(submitForm);
</pre>
</blockquote>
<hr>
<div class="subheader"><a name="join">加入聊天室</a></div><p>
<b>描述</b><p>
通常您向聊天室发送消息的第一步是加入这个聊天室。多人聊天允许在加入聊天室时指定一个参数。基本上您可以控制加入聊天室后接收的历史记录的数量花并且还可以提供聊天室里的昵称和密码如果聊天室有密码保护的话。</p>
<b>用法</b><p>
要加入一个聊天室您需要首先创建一个<i><b>MultiUserChat</b></i>的实例。把您要加入的聊天室的名称传递给构造方法。下一步是调用<i><b>MultiUserChat</b></i>实例的<b>join(...)</b>方法。但是您首先要决定发送哪种加入消息。如果您想加入没有密码和没有指定要发送的历史记录的数量您可以使用<b>join(String nickname)</b>方法,在这里 nickname是您在聊天室的昵称。万一聊天室需要密码想加入您可以使用<b>join(String nickname, String password)</b>方法。最后,最完整的加入聊天室的方法是调用<b>join(String nickname, String password, DiscussionHistory history, long timeout)</b>方法,在这里nickname是您在聊天室的昵称,password是您加入聊天室的密码,history是指定要接收的历史记录的数量的对象,timeout是等待服务器响应的毫秒数。</p>
<b>范例</b><p>
在这个例子中我们可以看到如何使用特定昵称加入一个聊天室: <br>
<blockquote>
<pre> <font color="#3f7f5f">// 使用XMPPConnection创建一个MultiUserChat</font>
MultiUserChat muc2 = new MultiUserChat(conn1, <font color="#0000FF">"myroom@conference.jabber.org"</font>);
<font color="#3f7f5f">// 用户2加入新聊天室</font>
<font color="#3f7f5f">// 聊天室服务将会决定要发送的历史记录数量</font>
muc2.join(<font color="#0000FF">"testbot2"</font>);
</pre>
</blockquote>
在这个例子中我们可以看到如何使用特定昵称和密码加入聊天室: <br>
<blockquote>
<pre> <font color="#3f7f5f">// 使用XMPPConnection创建一个MultiUserChat</font>
MultiUserChat muc2 = new MultiUserChat(conn1, <font color="#0000FF">"myroom@conference.jabber.org"</font>);
<font color="#3f7f5f">// 用户2使用密码加入新聊天室</font>
<font color="#3f7f5f">// 聊天室服务将会决定要发送的历史记录数量</font>
muc2.join(<font color="#0000FF">"testbot2"</font>, <font color="#0000FF">"password"</font>);
</pre>
</blockquote>
在这个例子中我们可以看到如何使用特定昵称和要接收的历史记录的数量:<br>
<blockquote>
<pre> <font color="#3f7f5f">// 使用XMPPConnection创建一个MultiUserChat</font>
MultiUserChat muc2 = new MultiUserChat(conn1, <font color="#0000FF">"myroom@conference.jabber.org"</font>);
<font color="#3f7f5f">// 用户2使用密码和指定要接收的历史记录的数量加入新聊天室</font>
<font color="#3f7f5f">// 在这个例子中我们请求最后5条消息。</font>
DiscussionHistory history = new DiscussionHistory();
history.setMaxStanzas(5);
muc2.join(<font color="#0000FF">"testbot2"</font>, <font color="#0000FF">"password"</font>, history, SmackConfiguration.getPacketReplyTimeout());
</pre>
</blockquote>
<hr>
<div class="subheader"><a name="invite">控制聊天室邀请</a></div><p>
<b>描述</b><p>
某人从自己拥有的聊天室邀请另一个人到聊天室是和有用的。根据聊天室的类型被邀请者可能接收一个用于加入聊天室的密码并且/或者被加到成员列表中如果聊天室是members-only类型的。Smack允许发送聊天室邀请并且允许潜在被邀请人监听聊天室邀请和邀请人监听被邀请人的拒绝。</p>
<b>用法</b><p>
要邀请另一个用户到聊天室您必须已经加入了该聊天室。一旦您加入了调用<i><b>MultiUserChat</b></i>的<b>invite(String participant, String reason)</b>方法,在这里participant是您要邀请的用户(例如hecate@shakespeare.lit),reason是用户被邀请的原因。</p><p>
如果潜在被邀请人想监听聊天室邀请,被邀请人必须向<i><b>MultiUserChat</b></i>类添加一个<i><b>InvitationListener</b></i>。因为<i><b>InvitationListener</b></i>是一个<i>接口</i>,需要创建一个类实现这个<i>接口</i>。如果邀请人相监听聊天室邀请拒绝,只要向<i><b>MultiUserChat</b></i>添加一个 <i><b>InvitationRejectionListener</b></i>。<i><b>InvitationRejectionListener</b></i>也是一个接口所以您需要创建一个类实现这个接口。
</p>
<b>范例</b><p>
在这个例子中我们可以看到如何邀请另一个用户到聊天室并且监听可能的拒绝: <br>
<blockquote>
<pre> <font color="#3f7f5f">// 用户2加入聊天室</font>
MultiUserChat muc2 = new MultiUserChat(conn2, room);
muc2.join(<font color="#0000FF">"testbot2"</font>);
<font color="#3f7f5f">// 用户2监听邀请拒绝</font>
muc2.addInvitationRejectionListener(new InvitationRejectionListener() {
public void invitationDeclined(String invit
Smack API中文版
5星 · 超过95%的资源 需积分: 44 9 浏览量
2011-01-18
11:14:34
上传
评论 3
收藏 111KB RAR 举报
linyu19872008
- 粉丝: 34
- 资源: 35
最新资源
- 目标跟踪-基于目标中心点同时进行目标检测+目标跟踪算法实现-项目源码-优质项目实战.zip
- Python《文本特征分析-全唐诗数据挖掘及分析 》+源代码
- Netron-Setup-4.5.0
- 可编辑的地图图形3-世界、各洲、美国地图.xls
- NineAi 新版ChatGPT AI系统网站源码
- Anaconda3-2022.10windows版本
- 基于Servlet的URL访问安全控制.doc
- 可编辑的地图图形-2-中国到省、到市、到县地图.xls
- 快慢指针法判断链表是否有环-go语言实现
- Python《金融新闻数据挖掘分析 (数据抓取、NLP算法分析、量化策略、回测框架等)》+源代码+项目说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
- 4
- 5
前往页