`
zhangziyueup
  • 浏览: 1168440 次
文章分类
社区版块
存档分类
最新评论

基于SIMPLE协议的Presence介绍[1]

 
阅读更多

基于SIMPLE协议的Presence介绍[1] <script language="javascript" type="text/javascript">document.title="基于SIMPLE协议的Presence介绍[1] - "+document.title</script>

E-mail: macrofox@163.com QQ:18902388 MSN: ming_wy@hotmail.com

基于SIMPLE协议的Presence介绍... 1

1.概述... 3

2.基于SIMPLE协议presence体系结构... 3

3.SIMPLE规范阅读指南... 5

4.典型消息流程... 6

4.1 订阅好友列表... 7

4.1.1情景说明... 7

4.1.2 SIP消息流程图... 8

4.1.3 消息流说明... 8

4.2 订阅单个用户(添加好友)... 20

4.2.1 情景说明... 20

4.2.2 消息流程图... 21

4.2.3 消息流说明... 21

4.3 订阅watcherinfo. 24

4.3.1 情景说明... 24

4.3.2 SIP消息流程图... 25

4.3.3 消息流说明... 25

4.4 发布状态信息... 27

4.4.1 情景说明... 27

4.4.2 SIP消息流程图... 28

4.4.3 消息流说明... 28

4.5 删除好友... 33

4.5.1 情景说明... 33

4.5.2 消息流程图... 33

4.5.3 消息流说明... 33

4.6 添加和删除黑名单... 34

4.6.1 情景说明... 34

4.6.2 消息流程图... 34

4.6.3 消息流说明... 35

5.参考规范... 35

6.文档更新记录... 36

1.概述

presence”,也作“presence information”,中文一般译为“呈现”,用以传达某一用户通过一组设备进行通信的能力和意愿。拿常见的MSN Messenger来举例,MSN v7.5为用户提供的可选状态有:联机、忙碌、马上回来、离开、接听电话、外出就餐和显示为脱机。这些状态便称为“presence状态”,它们表征了用户当前处于的某种状态和用户进行通信的意愿。同时,这些状态还反映出与该用户进行通信的能力,比如若用户处于“脱机”状态的话,别的用户便不能用即时消息与之通信。因此,一个最简单的presence过程如下:一个用户(称为watcher)订阅(SUBSCRIBE)他感兴趣的另一用户(presentity)的presence状态,presentity接受订阅请求。以后presentity的状态发生变化之后他会发布(PUBLISH)自己的新状态,这个新状态会通知(NOTIFY)给watcher。(注:watcherpresentity等概念严格上来说指网络中的通信实体,这里为了解释方便将他们进行了扩展,也泛指人)

随着市场对presenceIM(即时通信)的需求日益增大,各种各样的实现也如雨后春笋般冒了出来。但是目前市场上的大部分实现一般都采用私有协议,相互之间不兼容,呈现功能实现的也不完整。为了对presenceIM规范化,IETF1998年成立了IMPPInstant Message and Presence Protocol)工作组,希望设计出健壮、安全和灵活的呈现/即时消息协议。IMPP主要定义必要的协议和数据格式,用来构建一个具有空间接收、发布能力的即时信息系统。现在已经提出了各种不同的协议草案或建议,如:SIMPLEXMPPPRIMAPEX等。其中,最有实力的是前两个标准,目前的IM/presence也主要分为两大阵营:SIP/SIMPLEJABBER/XMPP。本文主要介绍基于SIMPLEpresence

2.基于SIMPLE协议presence体系结构

SIMPLE规范是在20012月由IETF SIMPLE工作组正式提出的,全称为 SIP Instant Messaging and Presence Leveraging Extensions (针对即时消息和呈现业务的利用扩展的会话初始化协议),是SIP协议针对IM/presence的扩展。

SIMPLE是目前为止制定的较为完善的一个规范,微软和IBM都致力于在它们的即时通讯系统中实现这个协议。

SIMPLE符合RFC2778提出的presence模型,其结构图如下:

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 359.25pt; HEIGHT: 240.75pt" o:ole="" type="#_x0000_t75"><imagedata src="file:///D:/DOCUME~1/Leoo/LOCALS~1/Temp/msohtml1/03/clip_image001.emz" o:title=""></imagedata></shape>

Figure 1 presence model

注:上面的实体都是功能实体,与实际实现中的物理实体往往有差别。

各实体功能如下:

Ø Presence Service:接收、存储和分发presence informationPresence Service既可以是一个物理实体上的server,也可以只是presentitywatcher之间的直接通信。在具体实现中前者比较常见,后者是P2P的模式。

Ø Presentity:用于提供presence informationPresence Service

Ø Watcher:向Presence Service请求获取Presentitypresence information或者自身的watcher information

Ø Principal:指单个的人、程序或者设备,也可以是人、程序、设备的集合体。对于Presence Service来说,各个Principal是不同的。

Ø Presence User Agent:为Principal提供手段来操作0个或者多个PresentityPrincipal操作Presence User Agent改变Presentity的状态。是PrincipalPresentity交互的interface

Ø Watcher User Agent:类似Presence User AgentPrincipal通过其来操作0个或多个WatcherWatcher收到Presentity的新状态之后也通过Watcher User Agent呈现给Principal

Ø Presence Protocol:定义了PresentityPresence ServiceWatcherPresence Service之间交换消息的一组标准。

在具体的实现中最常见的是把Presence Service实现为一个Presence ServerPresence User AgentPresentity组合在一起,WatcherWatcher User Agent组合在一起,由一个终端来同时支持这两种组合体,这样,一个终端就既能订阅别人的也能发布自己的presence information

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics