10分钟后,网络空闲的NSInputStream停止读取,直到下一次写入该套接字的NSOutputStream为止

时间:2016-02-23 20:33:03

标签: ios objective-c network-programming nsinputstream

网络不活动10分钟后,网络事件不再传递到我的应用程序中的NSInputStream。

在此10分钟期间,应用程序未停用,后退或终止。我用lldb重现这一点时证实了这一点,因为我的AppDelegate会记录这些事件。在我的设备上进行测试而没有连接到lldb时,我通过不断点击它来保持设备处于唤醒状态。

在10分钟内,我会与应用的UI元素进行互动。

在10分钟结束时,我触发应用程序写入套接字的NSOutputStream。在写入NSOutputStream之后,NSInputStream立即通知我的应用程序要读取的待处理数据。在此10分钟内,插座未关闭或断开连接。

如果网络空闲时间仅为9分钟,则套接字正确处理读取事件。

这看起来很奇怪,因为套接字没有关闭或重新连接(我在客户端和服务器上确认了这一点),也因为应用程序没有后台或暂停,手机没有锁定。

我的Info.plist中有<key>UIRequiresPersistentWiFi</key><true/>。但是我认为这只会影响30分钟。

我可以在IOS模拟器或物理设备以及IOS 9.1和92上重现这一点。在物理设备上,我使用和不使用lldb重现了这一点。在我的设备上测试时,我使用了wifi。

我想我可以通过让我的应用程序在10分钟内向服务器发送心跳来添加一种解决方法,但据我所知,不应该这样做。

我很感激任何帮助。

谢谢!

0 个答案:

没有答案
相关问题