0

我写了一个带有 SIP SDK 的 SIP 客户端,你可以上网。经典的 SIP 内容:您在 SIP 服务器上注册、拨打电话、被呼叫……这一切正常,但假设 SIP 服务器重新启动或由于其他原因丢失了您的 SIP 客户端的注册。现在其他客户端无法呼叫您,因为您在 SIP 服务器上找不到。

这是如何处理的?即使您已注册,您是否会定期发送另一条注册消息?每 10 分钟或类似的时间?你是先取消注册(这意味着在这之间的一段时间内你无法联系到,不会很好)然后注册还是可以在你已经注册没有问题的情况下调用注册?

我还找到了 register/options keep-alive 消息传递,但我不确定它的目的是什么,它可以处理 sip 服务器不再注册的情况吗?sip-servers 是否总是支持它?

4

1 回答 1

3

在对你的回复中REGISTER,你应该得到一个Expires标题(你也可以发送一个)。REGISTER您应该在到期时间之前发送另一个请求。这应该让您在典型场景中注册。服务器本身不应该丢失您的注册,即使它重新启动。如果它真的不能持久化数据,那么你就无能为力了。您的注册将在下一个到期时间附近刷新。

像往常一样 - 如果有疑问,请阅读RFC

10.3 处理 REGISTER 请求

...

7. The registrar now processes each contact address in the Contact
     header field in turn.  For each address, it determines the
     expiration interval as follows:

     -  If the field value has an "expires" parameter, that value
        MUST be taken as the requested expiration.

     -  If there is no such parameter, but the request has an
        Expires header field, that value MUST be taken as the
        requested expiration.

     -  If there is neither, a locally-configured default value MUST
        be taken as the requested expiration.

这部分还应该解释一些事情:10.2.1.1 Setting the Expiration Interval of Contact Addresses

于 2013-09-12T09:11:28.103 回答