用OPTIONS方法实现Keep Alive

[email protected]

在SIP应用中,假如用户在用SIP UA享受某种计时收费的业务,比如在线观看收费电视,突然死机,这时服务器不能得知任何关于用户设备死机的信息,计费服务仍在继续。

这显然是种不合理的情况,服务器必须实时的知道用户的状态,这种情况presence服务器也不一定能帮助解决问题。因为用户的SIP UA只有在改变状态的情况下才发PUBLISH消息到Presence Server,也就是说要等这个PUBLISH expired,服务器才能知道用户已经不在线了。但是用户无论发PUBLISH还是REGISTER,它的过期时间的设置都取决于用户的SIP UA,很多时候,用户会把这个时间设为10分钟,或更长。这就不能满足某些业务实时性高的要求。

 

很容易得出结论,对于某些实时性要求高的业务,比如IPTV Server,无论是REGISTER还是PUBLISH都不能解决问题。解决方案需要考虑以下几点:

1.         利用现有的SIP方法,并且不取决于用户SIP UA

2.         用户的SIP UA不必对此做任何特殊的处理。

3.         且时间控制取决于服务方,即Application Server或其他Server,因为不同的服务可能对时间精度要求不同。

 

很明显,如果Server周期的发一个SIP请求到终端,这个周期时间取决于该Server,如果用户的SIP UA有回response,则表示用户还是online,如果用户没有回response,那它就是offline的,Server可以终止该用户的服务。

但是,用什么SIP方法最合适呢?OPTIONS。因为RFC3261定义,所有的UA都必须支持OPTIONS方法,所以OPTIONS方法满足了上面提及的1 2点要求。而且OPTIONS方法简单,只是请求用户SIP UA的能力,不需要人机交互,与Dialog无关。所以,用OPTIONS方法来获知用户是否online再合适不过了。

 

其流程如下图:

你可能感兴趣的:(server,服务器,application,dialog,终端)