<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
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android平台的即时通信Smack 中文使用说明.rar (29个子文件)
documentation
providers.html 4KB
images
debugwindow.gif 15KB
enhanceddebugger.png 33KB
smacklogo.png 4KB
roster.png 18KB
extensions
messageevents.html 11KB
muc.html 24KB
privatedata.html 600B
rosterexchange.html 6KB
disco.html 9KB
invitation.html 2KB
filetransfer.html 6KB
index.html 365B
intro.html 3KB
time.html 366B
toc.html 700B
xhtml.html 7KB
style.css 1KB
dataforms.html 5KB
messaging.html 4KB
index.html 1014B
overview.html 2KB
gettingstarted.html 3KB
privacy.html 6KB
processing.html 3KB
style.css 1KB
roster.html 4KB
debugging.html 3KB
properties.html 3KB
共 29 条
- 1
资源评论
- awed20132013-10-21正在学习相关的东西,谢谢分享!
chenzhizhuan
- 粉丝: 2
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功