本文来自csdn lidp http://blog.csdn.net/perfectpdl,转载注明出处,谢谢。
rfc3265为 SIP协议的一个扩展,定义了一套在SIP协议上实现事件订阅及通知的框架,一个例子,类似QQ好友状态,你订阅你的好友的状态,你好友会通知你他的状态,当然这中间涉及服务器,但基本原理是这样。
此框架涉及订阅者和通知者,基本流程:
Subscriber Notifier |-----SUBSCRIBE---->| 订阅者订阅对方状态 |<-------200--------| 接收者接到后给予确认 |<------NOTIFY----- | 接收者确认后立即返回订阅的状态给对方 |--------200------->| |<------NOTIFY----- | 订阅者收到后返回200 ok确认。 |--------200------->|
类似 SIP协议里的注册行为,订阅也有刷新,初始订阅有expire头指定订阅失效时间,这期间内订阅者会周期发送订阅请求,如果在指定expire时间内通知者没收到订阅刷新,不会再通知对方状态。
此规范引入两个新SIP方法,subscribe和notify,订阅者发起SUBSCRIBE, 其消息头event标识要订阅的事件类型,比如状态(Presence, RFC 3842),message-summary等。
通知着 以NOTIFY响应,其消息头 subscribe-state指定订阅者状态,有三种,active,pending,terminate.
通过消息体传送具体事件信息,一般为xml格式。
类似注册,订阅者通过发送 expire是0的subscribe取消订阅,通知者立即发送notify,subscribe-state头指定状态为terminate,停止订阅。
此协议结合 rfc 3856,rfc3428共同定义了 simple,(the session initiation protocol for instant messaging and presence leveraging extensions)即 基于SIP协议的在线状态及即时通信(IM).
参考:
http://en.wikipedia.org/wiki/SIMPLE
http://tools.ietf.org/html/rfc5638