noiile@hotmail.com
在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再合適不過了。
其流程如: