2014-02-17 151 views
0

我正在开发一个消息应用程序,我必须每x秒钟向服务器发出一个调用以从服务器加载新消息。 我使用每隔x秒调用一次服务器的NSTimer。 但是,例如x = 1秒,服务器的响应在1.5秒后到达。在这种情况下,我向服务器发送了一个新的请求,在之前的请求得到满足之前,这对我的应用逻辑来说是一个大问题。你能帮助我理解如何循环检查服务器上的消息而不会出现此问题? 谢谢。NSTimer和服务器响应

+0

如果使用Apple推送通知通知您的应用程序是否收到用户的消息,那么该如何处理?这样您就不必经常检查服务器,看看是否有消息在等待。 – sangony

+0

@sangony是正确的。推送通知是更好的选择。请记住,如果您的应用程序处于暂停状态,则此方案不起作用。如果您不喜欢推送通知,则可以尝试iOS7中的后台抓取API。 – Foriger

回答

1

在开始您的网络请求之前停止您的计时器,然后在获得答案时重新启动计时器。

1

您可以发送请求到服务器,一旦您有回应(成功/失败)发送另一个。在这种情况下,您将确保只发送一个请求,并且您可以轻松处理。

+0

我认为这是最好的解决方案。唯一的问题是:如果服务器不发送响应会发生什么?没有办法重新尝试与服务器的连接。 – Anna565

+0

如果服务器没有看到响应,您应该看到失败消息(超时),正如我之前所说的,在成功和失败的情况下发送另一个响应。 – Greg