我正在测试由使用PJSip的iphone应用开发者编写的Voip sip客户端。我亲自玩弄了一些SIP开发,但我不是专家。
使用我们的VOIP软交换机(Acme数据包/ Broadsoft),它通过动态确定最佳重新注册时间来保护Nat设备上的Nat针孔活动,从而完成所有Nat处理。通常当iphone落后于NAT时,这段时间在60-90秒之间。
Iphone App正在使用TCP,并且很乐意使用Backgrounding。显然背景是节省电池寿命的理想选择。电话会唤醒电话,您可以收听电话。
问题是,当应用程序进入后台模式时,它无法保持Nat针孔打开。这意味着一旦针孔关闭,防火墙将始终拒绝新的来电到达Iphone应用程序。这会影响到应用程序工作几分钟,然后无法工作一段时间,然后当应用程序退出后台并再次注册时,入站呼叫再次起作用。
他们有针对后台应用的voip应用程序的内置特殊例外我们可以: 1.配置应用程序套接字,以便它们仍然可以处理传入的消息传递。这没有帮助,因为如果nat针孔关闭,消息传递将永远不会到达应用程序。 2.使用Keep alive,但最短时间为600秒。这也意味着针孔会关闭。
是否有一些聪明的方式,应用程序可以发送Voip Sip注册消息,比如每60秒左右,同时保留在后台。或者应用程序可以每60秒唤醒一次,然后关闭。
我是否真的很困惑市场上是否有其他sip应用程序解决了这个问题。
答案 0 :(得分:0)
要解决此问题,请让Acme将TCP Keepalive发送到注册到它的设备,并将到期时间设置为至少600秒。您可能希望它更高,因为手机将需要一些时间来重新注册,所以像720s这样的东西会更好。
如果你将keepailve间隔设置得足够低,大约30秒左右,这应该保持NAT针孔打开。 NAT应该允许更高的间隔,但可能需要一些测试。
我知道ACME SBC可以解决这个问题。
答案 1 :(得分:-1)
如果间隔不是太短,则允许TCP保持alives,我认为这应该保持NAT会话打开。你能否告诉我们它是否有帮助?