`
BradyZhu
  • 浏览: 248919 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IM设计思考:XMPP多用户文本聊天协议(MUC:Multi User Chat)

 
阅读更多

XMPP在其XEP-0045扩展中定义了一个用于多用户文本会议(群聊)的协议,类似于聊天室、等。由于它作为一个标准协议在定义模型上力求完备,涵盖了现实中的绝大部分IM产品模型,而现实中的IM产品基本都只实现了XMPP定义的模型中的一个子集。


XMPP定义的一些基本概念:

房间:房间的JID标识 <room@service> (例如, <jdev@conference.jabber.org>), 这里 "room" 是房间的名称而 "service" 是多用户聊天服务运行所在的主机名

房客:房客的JID标识<room@service/nick>,nick是房客在房间的昵称

岗位:表达了用户和房间的长期关系。XMPP定义的岗位有:所有者(owner)、管理者(admin)、成员(member)、排斥者(outcast)

角色:表达了用户和房间的临时联系,它只存在与一次访问期间。XMPP定义的角色有:主持人(moderator)、与会者(paticipant)、游客(visitor)

有关岗位、角色及其权限详细描述,参考协议规范描述(角色、岗位和权限)


XMPP MUC协议扩展定义了一个广泛的用例集合,下面提取一些典型的核心场景来简要分析说明并辅助实现。

1. MUC服务发现

主要用于客户端向服务器咨询是否支持MUC,协议交互细节详见:MUC Discovering

2. 新建房间

从房间创建的视角来看,本质上有2种类型的房间:

instant room 临时房间(类似于临时会话),适用于那些临时选取多个用户进行会话的场景

reserverd room 永久房间(类似于固定群)

3. 销毁房间

销毁房间通常仅限于房间的所有者,临时房间通常是在房间所有用户都离开后自动销毁

4. 加入房间

加入房间可以有2种方式,申请和邀请

5. 发言

在房间内发言方式从使用场景的角度看通常有3种:

- 向房间内所有人发言,发言者发送一个消息类型为groupchat的消息,由房间服务转发给所有与会者。

- 向部分人发言,这个场景发言者实际创建了一个临时房间,在该临时房间内进行群发。

- 向某一个人发送似有消息,这个场景退化为了一对一的单独聊天。

6. 退出房间

主动退出、管理员(主持人)踢出房间


关于XMPP多用户文本聊天协议的完整用例集合,请参考协议规范。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics